我試圖使用單個XSLT文件插入唯一ID和對這些ID的引用。一次引用插入的元素
由於XML:
<Parent>
<Name>Dr Evil</Name>
<Child>
<Name>Scott Evil</Name>
</Child>
</Parent>
和身份後,該XSLT片斷轉換:
<xsl:template match="Parent">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:element name="UID"><xsl:value-of select="generate-id(.)"/></xsl:element>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="Child">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:element name="UID"><xsl:value-of select="generate-id(.)"/></xsl:element>
<xsl:element name="ParentUID"><xsl:value-of select="../UID"/></xsl:element>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
我得到的輸出:
<Parent>
<UID>XYZ123</UID>
<Name>Dr Evil</Name>
<Child>
<UID>ABC789</UID>
<ParentUID/> <-- expected <ParentUID>XYZ123</ParentUID>
<Name>Scott Evil</Name>
</Child>
</Parent>
換句話說,該UID元素當ParentUID元素被插入到子元素中時,插入到父元素中不可見。
我知道我可以使用兩遍(兩次變換),但我真的很想嘗試在一個文件中執行此操作。
除了DevNull的正確答案,我看到你嘗試選擇從結果樹節點。請記住,這不會發生。 – 2010-09-02 13:16:24