0

我想在 JAVA 中使用 XSLT 将 XML 转换为 XML。如何在 XSLT 文件中添加命名空间名称及其值?我尝试了很多方法来获取命名空间值,但没有得到我期望的输出。所以请做必要的事情。

这是我的 XML,

<?xml version="1.0" encoding="ISO-8859-1"?>
<root xmlns="namespacename">
  <child>A</child>
  <child>B</child>
</root>

XSLT 文件,

<?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:template match="/">
       <xsl:element name="root" namespace="namespacename">
          <xsl:element name="child-one">
            <xsl:value-of select="root/child"/>
          </xsl:element>
       </xsl:element>
     </xsl:template>
    </xsl:stylesheet>

我需要这样的输出 XML 文件。

<?xml version="1.0" encoding="ISO-8859-1"?>
<root xmlns="namespacename">
  <child-one>A</child-one>
</root>
4

1 回答 1

2

如果您知道命名空间,则只需将其添加为默认命名空间并将结果写入文字元素。

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns="namespacename"
                xmlns:i="namespacename"
                exclude-result-prefixes="i">
  <xsl:template match="/">
    <root>
      <child-one>
        <xsl:value-of select="i:root/i:child"/>
      </child-one>
    </root>
  </xsl:template>
</xsl:stylesheet>

请注意,XPath 表达式root/child通常不尊重默认名称空间,因此您必须声明一个带有前缀(例如i)的附加名称空间,以便路径变为i:root/i:child. 但是,这也需要使用exclude-result-prefixes="i".

于 2013-07-25T07:31:53.497 回答