我是新來的xslt,我擔心這個問題取決於我掛在程序的思維。合併和重命名字段在xslt
我有一組信息,我想要重命名,並且在某些情況下可以進行濃縮。我可以處理重命名,但凝結讓我失望。我的做法是重命名所有內容,然後,如果重命名時出現重複,則刪除重複項。爲了清楚起見,這裏有一些代碼。
輸入:
<variables>
<var value="a-value"> a </var>
<var value="b-value"> b </var>
<var value="c-value"> c </var>
<var value="d-value"> d </var>
</variables>
所需的輸出:
<variables>
<var value="new-a-value"> new-a </var>
<var value="new-b-and-c-value"> new-b-and-c </var>
<var value="new-d-value"> new-d </var>
</variables>
我的XSLT:
<xsl:for-each select="var">
<xsl:choose>
<xsl:when test="@value = 'a-value'">
<var value="new-a-value"> new-a </var>
</xsl:when>
<xsl:when test="@value = 'b-value'">
<var value="new-b-and-c-value"> new-b-and-c </var>
</xsl:when>
<xsl:when test="@value = 'c-value'">
<var value="new-b-and-c-value"> new-b-and-c </var>
</xsl:when>
<xsl:when test="@value = 'd-value'">
<var value="new-d-value"> new-d </var>
</xsl:when>
</xsl:choose>
</xsl:for-each>
我想改名後刪除重複項。我不確定該從哪裏出發。我的直覺促使我想設置某種檢查方式來檢查何時發現b值或c值或通過中間處理的xml執行另一次迭代,以移除重複項,但我認爲這兩種方法都不是在xslt中可行。
+1很好的回答。我會給予更高的優先權,而不是負面的。 – 2011-02-02 23:08:09
@Alej:你會給予'[1]`模板更高的優先權,對吧?而不是空模板的負面優先。起初我以爲你的意思是你會在同一個模板上將負面的優先權更改爲更高的優先權。 – LarsH 2011-02-03 02:03:03