2010-06-15 46 views
1
<?xml version="1.0" encoding="windows-1251"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" indent="no" encoding="windows-1251"/> 

<xsl:template match="/"> 
    <xsl:for-each select="document('')//w"> 
     <xsl:value-of select="@e"/> 
    </xsl:for-each> 
</xsl:template> 

<my:translations xmlns:my="my:my"> 
    <w e="name" r="Название"/> 
    <w e="model" r="Модель"/> 
    <w e="year" r="Год"/> 
    <w e="glass_type" r="Тип"/> 
    <w e="scancode" r="Сканкод"/> 
    <w e="eurocode" r="Еврокод"/> 
    <w e="comment" r="Комментарий"/> 
    <w e="glass_size" r="Размер"/> 
    <w e="vendor" r="Производитель"/> 
    <w e="trademark" r="Торговая марка"/> 
    <w e="fprice" r="Цена"/> 
</my:translations> 

</xsl:stylesheet> 

我沒有結果。什麼錯誤?元素不屬於文檔('')


請原諒我在提問中的粗心。

+1

如果出現嚴重問題的競爭,您可能會獲得第一名! 您的完整樣式表在哪裏? 你爲什麼不通過發佈模糊的問題來阻止任何人(算命先生除外)給他們一個嘗試? – 2010-06-15 17:55:11

+0

@Dimitre Novatchev,你是對的。我糾正了這個問題。 – Kalinin 2010-06-16 06:29:12

+0

*如果*這實際上是您的代碼,它沒有問題 - 它會產生想要的結果。看到我的新答案。你在使用什麼XSLT處理器? – 2010-06-16 12:55:44

回答

0

應該沒有問題。這個樣式表:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

<my:translations xmlns:my="my:my"> 
    <w e="name" r="Название"/> 
    <w e="model" r="Модель"/> 
    <w e="year" r="Год"/> 
    <w e="glass_type" r="Тип"/> 
    <w e="scancode" r="Сканкод"/> 
    <w e="eurocode" r="Еврокод"/> 
    <w e="comment" r="Комментарий"/> 
    <w e="glass_size" r="Размер"/> 
    <w e="vendor" r="Производитель"/> 
    <w e="trademark" r="Торговая марка"/> 
    <w e="fprice" r="Цена"/> 
</my:translations> 

<xsl:template match="/"> 
<root> 
<xsl:value-of select="count(document('')//w)"/> 
</root> 
</xsl:template> 

</xsl:stylesheet> 

這是任何輸入結果:

<root>11</root> 

編輯:隨着你發佈新的樣式表,我得到預期的結果:

namemodelyearglass_typescancodeeurocodecommentglass_sizevendortrademarkfprice 
+0

@Alejandro,'count'函數返回結果 - 0. – Kalinin 2010-06-15 14:53:24

+0

@Kalinin:你運行了這個轉換嗎?我得到確切的結果。你用什麼處理器?另外,我不明白你的編輯。你需要什麼? – 2010-06-15 16:06:22

+0

@kalinin:我們無法幫助您找到未發佈代碼中的錯誤。 – 2010-06-15 16:52:04

0

最有可能的問題 - 在你禮貌地沒有顯示的代碼中 - 是一個可能的默認命名空間

如果是這樣(即旁邊我在算命好)的情況下,這將意味着,該解決方案將如下所示:

document('')//x:w 

其中prefic x:被綁定到您的默認命名空間。

0

更新:OP終於發佈了他的代碼。 代碼沒有問題。

當提供變換:

<?xml version="1.0" encoding="windows-1251"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" indent="no" encoding="windows-1251"/> 

<xsl:template match="/"> 
    <xsl:for-each select="document('')//w"> 
     <xsl:value-of select="@e"/> 
    </xsl:for-each> 
</xsl:template> 

<my:translations xmlns:my="my:my"> 
    <w e="name" r="Название"/> 
    <w e="model" r="Модель"/> 
    <w e="year" r="Год"/> 
    <w e="glass_type" r="Тип"/> 
    <w e="scancode" r="Сканкод"/> 
    <w e="eurocode" r="Еврокод"/> 
    <w e="comment" r="Комментарий"/> 
    <w e="glass_size" r="Размер"/> 
    <w e="vendor" r="Производитель"/> 
    <w e="trademark" r="Торговая марка"/> 
    <w e="fprice" r="Цена"/> 
</my:translations> 

</xsl:stylesheet> 

運行與7 XSLT 1.0處理器和2 XSLT上任何XML文檔(未使用),它們都產生相同的正確2.0處理器和希望的結果:

namemodelyearglass_typescancodeeurocodecommentglass_sizevendortrademarkfprice 
+0

我不明白髮生了什麼事(我的問題是什麼)。也許這是因爲我們如何形成輸出文件。沒有意義讓你再受苦。我必須瞭解我們的CMS如何生成輸出html。我暫停一下。 – Kalinin 2010-06-16 13:07:17