我使用這個XSL來改變一些XML的兩個標籤更改標籤的價值只有在另外的標籤有
XSL的特定值
xsltproc - "filename" << EOF
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="no"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="root/attr1/text()">
<xsl:text>new-text</xsl:text>
</xsl:template>
<xsl:template match="root/group1/attr1/text()">
<xsl:text>another-new-text</xsl:text>
</xsl:template>
</xsl:stylesheet>
EOF
XML
<root>
<attr1>someold</attr1>
<group1>
<attr1>anotherold</attr1>
</group1>
<attr2>0</attr2>
</root>
輸出
<root>
<attr1>new-text</attr1>
<group1>
<attr1>another-new-text</attr1>
</group1>
<attr2>0</attr2>
</root>
這個xsl非常適合我的需求,但現在我需要在轉換之前驗證attr2
。如果attr2
是0
我需要改變,否則我應該離開舊值。
我有數百個xml轉換,每一個都有數百行,因此我正在尋找一種自動方式來驗證。我嘗試了xsl:if
,但找不到放置標籤的位置以及如何構建test
屬性。
如何僅在其他標籤具有特定值時更改標籤的值?對xsl的其他改進也是值得歡迎的。
是否有辦法來驗證'attR2位= 0'只是一次? –
不在基於模板的方法中,如果您需要兩個帶有檢查但內容不同的模板。 –