1
我有下面的XML文件:與另一個標籤更換標籤根據其屬性值
<p>
<rs key="rGR" n="1" id="id1">XXXXX</rs>
<rs key="rGR" n="2" xml:id="id3">YYYYYY</rs>, text text texts
<rs key="rGR" n="3" xml:id="id4">ZZZZZZ</rs>) text text text.
<rs key="r3" n="1" xml:id="id30">HHHHHH</rs>text text text text text.
text text
<rs key="r3" n="2" xml:id="id31">KKKKKK</rs>
<rs key="r3" n="3" xml:id="id32">PPPPPPP</rs> text text text
</p>
我想用標籤<ref>
更換標籤rs[@n="1"]
,只保留@id
和其他<rs>
與n != 1
。這應該有一些關鍵,因爲我想用標籤<ptr>
替換它,該標籤的屬性指針包含<rs>
的@id
和n=1
。
輸出應該是這樣的:
<p>
<ref id="id1">XXXXX</ref>(text text
<ptr pointer="id1">YYYYYY</ptr>, text text text
<ptr pointer="id1">ZZZZZZ</ptr>) text text text
<ref id="id30">HHHHHH</ref>
text text text text text.
text text
<ptr pointer="id30">KKKKKK</ptr>
<ptr pointer="id30">PPPPPPP</ptr> text text text
</ref>
</p>
我用下面的語法,但它僅適用,如果n=1
<xsl:template match="rs[@n='1']">
<ref id="{@xml:id}">
<xsl:apply-templates/>
</ref>
</xsl:template>
謝謝@Tim的回答,標籤被放置在正確的地方,但對於標籤RS [@鍵=「RGR」] id的值不會在這兩個和標籤存在。 –
AbirH
第二種解決方案效果很好,非常感謝您的幫助! – AbirH
我認爲當標籤無序時會有問題,例如,當我們有這個問題時: XXXXX HHHHHH YYYYYY rs [@ id =「id3」]將採取rs [@ id =「id30」]的編號 –
AbirH