XSL - 如何包含前缀?

时间:2017-11-28 20:10:39

标签: xml oracle xslt namespaces jdeveloper

通过为根节点添加模板来修复此问题,该模板会自动添加所有必需的前缀,而无需进行其他更改。

这是最终的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中。

0 个答案:

没有答案