通过为根节点添加模板来修复此问题,该模板会自动添加所有必需的前缀,而无需进行其他更改。
这是最终的XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:bfp="http://www.test.com/breakFixProcess/3.0/"
xmlns:dm="http://www.test.com/dataModel/3.0/"
xmlns:xmlns="http://www.w3.org/2000/xmlns/"
exclude-result-prefixes="xmlns xs">
<xsl:template match="/bfp:*">
<bfp:Message>
<xsl:apply-templates select="@* , node()"/>
</bfp:Message>
</xsl:template>
<xsl:template match="bfp:* | @bfp:*">
<xsl:element name="bfp:{local-name()}">
<xsl:for-each select="@*">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates select="@* , node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="dm:*|@dm:*">
<xsl:element name="dm:{local-name()}">
<xsl:for-each select="@*">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates select="@* , node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
我正在尝试找到一种在字段中包含前缀的方法,而不必重新定义xmlns前缀。
我一直在尝试使用
在根元素中添加一个额外的前缀 < xsl:attribute name="xmlns:dm">www.test.com < /xsl:attribute >
但是,由于未定义XMLNS,因此它添加了其定义,该定义被处理为尝试重新定义xmlns前缀。
有没有办法包含这个? dm前缀在我的样式表中定义。
这是我的XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:bfp="http://www.test.com/breakFixProcess/3.0/"
xmlns:dm="http://www.test.com/dataModel/3.0/"
xmlns="http://www.w3.org/2000/xmlns/"
exclude-result-prefixes="xmlns">
<xsl:template match="bfp:* | @bfp:*">
<xsl:element name="bfp:{local-name()}" >
<xsl:for-each select="@*">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:attribute name="xmlns:dm">http://www.test.com/dataModel/3.0/</xsl:attribute>
<xsl:apply-templates select="@* , node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="dm:* | @dm:*">
<xsl:element name="dm:{local-name()}">
<xsl:for-each select="@*">
<xsl:attribute name="{name(.)}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates select="@* , node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
将xmlns:xmlns前缀添加到生成的XML中。