gpt4 book ai didi

java - 如何在 XSLT 中添加命名空间名称及其值?

转载 作者:行者123 更新时间:2023-12-02 06:52:28 25 4
gpt4 key购买 nike

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

这是我的 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>

最佳答案

如果您知道 namespace ,则只需将其添加为默认 namespace 并将结果写入文字元素即可。

<?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" 排除结果的命名空间。

关于java - 如何在 XSLT 中添加命名空间名称及其值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17850983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com