gpt4 book ai didi

xml - 使用 xsl 从 xml 中删除 xmlns 命名空间

转载 作者:行者123 更新时间:2023-12-04 17:04:27 25 4
gpt4 key购买 nike

我有这个 XML 文档

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="data.xsl"?>
<products xmlns="http://zanox.com/productdata/exportservice/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://zanox.com/productdata/exportservice/v1 http://productdata.zanox.com/exportservice/schema/export-1.1.xsd">
<product>
<name>BERTRAND BELIN+YANN DESTAL+D.RIVET</name>
<program>3467</program>
</product>

还有我的 XSL :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes"/>

<xsl:template match="/">
<xsl:apply-templates select="//product"/>
</xsl:template>

<xsl:template match="product">
<xsl:text>insert into data (name, program) values(</xsl:text>
<xsl:value-of select="./name"/>
<xsl:text>,'</xsl:text>
<xsl:value-of select="./program"/>
<xsl:text>'); </xsl:text>
</xsl:template>

</xsl:stylesheet>

但这不起作用我需要从 XML 中的产品中删除 xmlns 命名空间。我不明白为什么 omit-xml-declaration="yes"不起作用?

最佳答案

要使您的 xslt 与带有 namespace 的 xml 文件一起使用,您必须将 namespace 声明添加到样式表中。
此外,默认 namespace (xml 中没有 pefix 的 namespace )需要在 xslt 中有一个前缀。要使您的样式表正常工作,请尝试以下操作:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:v1="http://zanox.com/productdata/exportservice/v1">
<xsl:output method="text" omit-xml-declaration="yes"/>

<xsl:template match="/">
<xsl:apply-templates select="//v1:product"/>
</xsl:template>

<xsl:template match="v1:product">
<xsl:text>insert into data (name, program) values(</xsl:text>
<xsl:value-of select="./v1:name"/>
<xsl:text>,'</xsl:text>
<xsl:value-of select="./v1:program"/>
<xsl:text>'); </xsl:text>
</xsl:template>

</xsl:stylesheet>

xml 声明是大多数 xml 文件中的第一行:
<?xml version="1.0"?>

哪个将被“省略” omit-xml-declaration="yes" .但只有使用 xsl:output method="xml" 才有意义.

上面的 xslt 将生成以下输出:
insert into data (name, program) values(BERTRAND BELIN+YANN DESTAL+D.RIVET,'3467');

关于xml - 使用 xsl 从 xml 中删除 xmlns 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16697236/

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