我有两个问题与XML到XML的转换有关。
如何使一个新元素的名称是现有元素的值(在我的例子中,现有元素<author>
的值是Mike,我想创建一个名为Mike的新标记。)
如何使一个新元素属性名称是现有元素的值(在我的示例中,现有元素<grade>
的值为5,我想创建一个名为Mike的新标记,其属性名称为&# 34; 5&#34)。这是我的例子:
现有XML:
<art>
<images>
<image>
<title>Cat</title>
<author>Mike</author>
<grade>5<grade>
</image>
<image>
<title>Snake</title>
<author>John</author>
<grade>4<grade>
</image>
</images>
</art>
标签艺术中的新元素:
<authors>
<Mike grade="5">
<field_of_art>photography</field_of_art>
</Mike>
</authors>
答案 0 :(得分:2)
因此,您可以使用<xsl:element>
和<xsl:attribute>
代码执行此操作:
<!-- assumes the current context is an image tag -->
<xsl:element name="{author}">
<xsl:attribute name="grade">
<xsl:value-of select="grade" />
</xsl:attribute>
<field_of_art>photography</field_of_art>
</xsl:element>
但要注意 - 如果author
标记包含空格或无效字符,则它无法正常工作。例如,如果您有<author>Mike 2</author>
,则样式表将失败,因为标记名称不能包含空格,或者如果存在<author>Mike&Jane</author>
,则样式表也会失败。