我需要添加命名空间,并向某些节点添加属性。有了这个输入:
<root>
<Node1>test</Node1>
<DateTo />
</root>
我想要这个输出:
<my:root xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-07-28T07:33:11">
<my:Node1>test</my:Node1>
<my:DateTo xsi:nil="true"/>
</my:root>
DateTo节点需要设置此属性。
我使用此转换成功添加了命名空间,但无法添加属性。
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:template match='*'>
<xsl:element name='my:{local-name()}' namespace='http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-07-28T07:33:11' >
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>"
我收到此错误“在添加了text,comment,pi或子元素节点之后,无法将属性和命名空间节点添加到父元素。”感谢任何帮助这里。
答案 0 :(得分:2)
您可以尝试以下操作来插入其他属性:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
version='1.0'>
<xsl:template match='*'>
<xsl:element name='my:{local-name()}'
xmlns:my='http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-07-28T07:33:11'>
<xsl:if test="not(*) and not(normalize-space())">
<xsl:attribute name="xsi:nil">
<xsl:value-of select="true()"/>
</xsl:attribute>
</xsl:if>
<xsl:apply-templates />
</xsl:element>
</xsl:template>
</xsl:stylesheet>