2012-02-16 87 views
0

請參閱Diff 1.0 vs 2.0。這個問題已經解決了,但對於我來說,首先是什麼引起了這個問題,這仍然有點神祕。
現在我可能找到了一些東西,但需要幫助瞭解發生了什麼。
我簡化輸入XML到模板規則處理的區別XSLT 1.0 vs 2.0(bis)

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <Manager> 
     <Employee grade="9"/> 
     <Employee grade="8"/> 
    </Manager> 
    <Manager> 
     <Employee grade="9"/> 
     <Employee grade="8"/> 
     <Employee grade="4"/> 
    </Manager> 
</root> 

我應用在這個輸入的樣式表是

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

    <xsl:template match="/"> 
     <root> 
      <xsl:apply-templates select="root/Manager"/> 
     </root> 
    </xsl:template> 

    <xsl:template match="Manager"> 
     <test><xsl:value-of select="Employee/@grade"/></test> 
    </xsl:template> 
</xsl:stylesheet> 

輸出是

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <test>9</test> 
    <test>9</test> 
</root> 

但是運行在XSLT 2.0模式的轉變(變化樣式表/ @版本爲「2.0」),輸出爲

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <test>9 8</test> 
    <test>9 8 4</test> 
</root> 

我想知道XSLT 1.0和XSLT 2.0中的精確區別是什麼引起的。

回答

1

對於第一個區別,我做了解釋,使用XSLT 2.0時,比較運算符類似小於或大於或小於或等於默認等比較字符串,而對於XSLT 1.0,這些運算符僅用於數字,將任何操作數轉換爲數字。

對於這個主題的區別僅僅是用XSLT 1.0 xsl:value-of select="foo"輸出在所選擇的節點組foo元件的第一foo元件的字符串值,同時用XSLT 2.0這種情況已經改變,如果被選擇的序列,然後用空格隔開輸出序列中項目的字符串值列表。您可以更改在XSLT 2.0中使用的separator屬性xsl:value-of所用的分隔符(即空格)。另見http://www.w3.org/TR/xslt20/#incompatibilities

+0

再次感謝馬丁 - 1.0和2.0之間的差異現在變得越來越清晰了... – Maestro13 2012-02-16 15:38:29