我可以消除此转换输出中的命名空间声明吗?
我想使用 XMLT 动态生成一个 XML 文件,该文件接受另一个 XML 文件作为输入。
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="data">
<xsl:apply-templates select="books" />
</xsl:template>
<xsl:template match="books">
<books>
<xsl:apply-templates select="chapters" />
</books>
</xsl:template>
<xsl:template match="chapters">
<chapter name="{@name}" source="{@source}"
xmlns:xi="http://www.w3c.org/2001/XInclude">
<xsl:apply-templates select="pages" />
</chapter>
</xsl:template>
<xsl:template match="pages" xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include>
<xsl:value-of select="@name" />
</xi:include>
</xsl:template>
</xsl:stylesheet>
我想要的输出如下。
<chapter
xmlns:xi="http://www.w3c.org/2001/XInclude" name="chapter1">
<xi:include>page1</xi:include>
<xi:include>page2</xi:include>
<xi:include>page3</xi:include>
</chapter>
不幸的是,我的代码生成以下输出。
<chapter
xmlns:xi="http://www.w3c.org/2001/XInclude" name="chapter1">
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude">page1</xi:include>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude">page2</xi:include>
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude">page3</xi:include>
</chapter>
有没有办法可以消除命名空间的实际 URI,因为我可以拥有 xi:include 标签而无需它们?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将
xmlns:xi="http://www.w3.org/2001/XInclude"
移动到xsl:stylesheet
元素:Move the
xmlns:xi="http://www.w3.org/2001/XInclude"
to thexsl:stylesheet
element:请注意,您正在使用两个不同的命名空间 URI:
"
如果它们相同,则 命名空间修复过程 会解决这个问题。
对于此输入:
此样式表(您的样式表经过修改后的拼写错误):
输出:
Do note that your are using two different namespace URIs:
and
If they were the same, the namespace fixup process would take care of that.
For this input:
This stylesheet (yours with amended typo):
Output: