我有一個帶有un-namespaced元素的XML文檔,我想用XSLT爲它們添加名稱空間。大多數元素將位於名稱空間A中;一些將在命名空間B中。我該怎麼做?給元素添加一個名稱空間
10
A
回答
13
隨着foo.xml
<foo x="1">
<bar y="2">
<baz z="3"/>
</bar>
<a-special-element n="8"/>
</foo>
和foo.xsl
<xsl:template match="*">
<xsl:element name="{local-name()}" namespace="A" >
<xsl:copy-of select="attribute::*"/>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="a-special-element">
<B:a-special-element xmlns:B="B">
<xsl:apply-templates match="children()"/>
</B:a-special-element>
</xsl:template>
</xsl:transform>
我得到
<foo xmlns="A" x="1">
<bar y="2">
<baz z="3"/>
</bar>
<B:a-special-element xmlns:B="B"/>
</foo>
這就是你想要的?
0
這是我到目前爲止有:
<xsl:template match="*">
<xsl:element name="{local-name()}" namespace="A" >
<xsl:apply-templates />
</xsl:element>
</xsl:template>
<xsl:template match="a-special-element">
<B:a-special-element xmlns:B="B">
<xsl:apply-templates />
</B:a-special-element>
</xsl:template>
這幾乎工程;問題是它沒有複製屬性。從我讀過的文章來看,xsl:元素沒有辦法從元素中原樣複製所有的屬性(use-attribute-sets似乎並沒有削減它)。
+1
您還沒有閱讀正確的文檔。使用武力,閱讀規範,這是非常好的寫作和訪問。 Yup; – ddaa 2008-09-27 23:39:23
2
您將需要兩個主要成分配方。
醬料將是identity transform,主要味道將由namespace
屬性給出xsl:element
。
以下未經測試的代碼應該將http://example.com/名稱空間添加到所有元素。
<xsl:template match="*">
<xsl:element name="xmpl:{local-name()}" namespace="http://example.com/">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
個人消息:你好,珍妮Tennison。我知道你正在讀這個。
相關問題
- 1. XSL添加新元素名稱空間
- 2. jaxb將元素名稱空間添加到元素
- 3. 爲默認名稱空間中的元素添加tag0名稱空間
- 4. 如何將空名稱空間添加到simpleXML元素
- 5. python lxml.html給元素添加空間
- 6. 給Laravel添加一個名稱空間4
- 7. 只需要在一個XML元素中添加XML名稱空間前綴
- 8. 如何給名稱空間添加名稱?
- 9. 將名稱空間添加到根元素
- 10. 使用xslt將名稱空間僅添加到根元素
- 11. 在smack消息中添加沒有名稱空間的元素
- 12. 使用xquery將名稱空間聲明添加到xml元素
- 13. 向元素添加各種名稱空間
- 14. 添加沒有名稱空間的SOAP頭元素
- 15. XSLT:添加新元素時排除名稱空間
- 16. 僅向一個元素添加命名空間
- 17. 覆寫根元素,添加命名空間根元素
- 18. 複製全部,在其他名稱空間中添加元素,在根節點上聲明名稱空間
- 19. 從另一個名稱空間不同於另一個元素的元素檢索一個元素
- 20. 如何使用XmlDocument將多個名稱空間添加到根元素?
- 21. System.Runtime.Serialization.SerializationException:期望元素從名稱空間
- 22. 名稱空間元素的屬性值
- 23. 具有名稱空間的Xml元素
- 24. 用XmlDocument.CreateElement()創建一個名稱空間的XML元素
- 25. org.apache.xml.security.c14n.CanonicalizationException:元素listFunctions有一個相對的名稱空間:xmlns =「xxx_xxx_listFunctions」
- 26. 如何使用xml.sax.saxutils.XMLGenerator寫一個名稱空間的元素
- 27. 給一個元素的子元素添加一個ID
- 28. 添加一個空白元素來填充空間?
- 29. 使用VTD-XML查找給定元素的名稱空間
- 30. XSLT:匹配名稱空間中除一個元素以外的所有元素
我在你的帖子之前搜索了一個答案,它基本上是一樣的。唯一的區別是我使用的是 ,但我相信它們在功能上是完全相同的。 –
2008-09-28 00:01:09