【发布时间】:2012-06-06 11:26:08
【问题描述】:
我有一个 xml 文档,其中包含带有属性的嵌套级别 <div> 元素。
我想通过属性名重命名 div。
【问题讨论】:
-
请提供一个具体示例来说明您想要实现的目标 - 例如源 XML 文件的摘录和该摘录的所需输出。
-
感谢您的帮助!,它工作
-
接受对您有帮助的答案,在投票计数下打勾。
我有一个 xml 文档,其中包含带有属性的嵌套级别 <div> 元素。
我想通过属性名重命名 div。
【问题讨论】:
这种转变:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="div">
<xsl:element name="{@class}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
应用于以下 XML 文档时:
<html>
<div class="animal">
Animals:
<div class="mammal">
Mammals:
<div class="dog">
Dogs
</div>
<div class="cat">Cats</div>
</div>
</div>
</html>
产生想要的正确结果:
<html>
<animal class="animal">
Animals:
<mammal class="mammal">
Mammals:
<dog class="dog">
Dogs
</dog>
<cat class="cat">Cats</cat>
</mammal>
</animal>
</html>
解释:
正确使用 identity rule 设计模式。
【讨论】:
<div> 元素重命名为class 属性的值。要求是“按属性名称重命名 div”。
class 元素上可能存在的一个属性。我认为 HTML div 元素没有 name 属性。