0
我真的很難理解爲什麼我的方法無效。我正在嘗試分配與c標籤中的文字相關聯的唯一數字ID。出於某種原因,第一個ID是正確計算,但其他所有事件都是空的......如果這很重要,我使用xsltproc。xslt編號有線行爲
XML輸入
<a>
<b><c>one</c></b>
<b><c>two</c></b>
<b><c>one</c></b>
<b><c>three</c></b>
<b><c>two</c></b>
<b><c>four</c></b>
<b><c>one</c></b>
</a>
預期的XML輸出
<?xml version="1.0"?>
<gg>
<ff id="1">one</ff>
<ff id="2">two</ff>
<ff id="1">one</ff>
<ff id="3">three</ff>
<ff id="2">two</ff>
<ff id="4">four</ff>
<ff id="1">one</ff>
</gg>
實際的輸出錯誤:
<?xml version="1.0"?>
<gg>
<ff id="1">one</ff>
<ff id="2">two</ff>
<ff id="">one</ff>
<ff id="3">three</ff>
<ff id="">two</ff>
<ff id="4">four</ff>
<ff id="">one</ff>
</gg>
XSLT樣式表假
<?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" indent="yes"/>
<xsl:key name="groups" match="//b" use="c/text()" />
<xsl:template match="/a">
<gg>
<xsl:apply-templates select="b"/>
</gg>
</xsl:template>
<xsl:template match="b">
<xsl:variable name="ff">
<xsl:call-template name="groupd">
<xsl:with-param name="cc" select="c" />
</xsl:call-template>
</xsl:variable>
<ff id="{$ff}"><xsl:value-of select="c"/></ff>
</xsl:template>
<xsl:template name="groupd">
<xsl:param name="cc" select="."/>
<xsl:number
count="//b[generate-id() = generate-id(key('groups', c/text())[1])]"
format="1" />
</xsl:template>
</xsl:stylesheet>
如果我理解正確的話,你用一種內存碎片,在那裏你進購的元素的「表」的在muenchian分組中的相對位置,然後使用* node-set *來查詢該表。這是我第一次看到這種方法。感謝您的幫助。我大部分時間都被困在這個問題上, –
大部分都是正確的,除了使用'node-set()'函數將變量從*結果樹片段*轉換爲* node-set *。這是XSLT 1.0的一個怪癖:你無法獲得RTF中節點的位置。 –