我的專案需要將xml轉換為與同一級別的其他標簽同名的重命名標簽。我嘗試使用函式 docucment.renameNode(),但它似乎不起作用......困難在于如何識別要重命名的正確標簽。
例如,這里是源 xml:
<A>
<B>
<C></C>
</B>
<B>
<D>
<E></E>
</D>
</B>
<B>
<F></F>
</B>
</A>
這里是新的預期 xml:
<A>
<B_1>
<C></C>
</B_1>
<B_2>
<D>
<E></E>
</D>
</B_2>
<B_3>
<F></F>
</B_3>
</A>
uj5u.com熱心網友回復:
我想知道為什么要進行這種轉換:將序列號放入標記名稱通常被認為是一個壞主意,因為它通常會使 XML 更難隨后處理。
但如果您真的想這樣做,這是一個非常簡單的 XSLT 轉換。在 XSLT 3.0 中它是
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="B">
<xsl:element name="B_{count(preceding-sibling::B) 1}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:transform>
使用 XSLT 1.0 也很容易,只需多幾行代碼即可添加標識模板來代替 xsl:mode 宣告。仍然比在 Java 中手動編碼要容易得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490149.html
