当前位置: 首页 > 知识库问答 >
问题:

XSLT转换,命名空间错误

麻书
2023-03-14

我试图用XSLT处理器在PHP中转换xml文档,但我无法选择任何内容。。。我认为这是一个名称空间问题。如果我从一个干净的<代码>

inputxml:

<?xml version="1.0" encoding="utf-8"?>
<products xmlns="http://***.net/schemata/base" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://***.net/schemata/base/products.xsd">
    <product ean="4260094730238" eol="false" model="1090017" status="true">
        <ean>4260094730238</ean>
        <eol>false</eol>
        <group>screens</group>
        <model>1090017</model>    
        <status>true</status>
  </product>
</products>

Xsl-file:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <ARTICLE>
            <SUPPLIER_AID>
                <xsl:value-of select="products/product/ean" />
            </SUPPLIER_AID>
        </ARTICLE>
    </xsl:template>
</xsl:stylesheet>

我无法更改输入文件,因为它是由其他程序生成的。

安德烈

共有1个答案

何哲
2023-03-14

将XSLT更改为使用输入XML中的默认命名空间,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:my="http://***.net/schemata/base" exclude-result-prefixes="my">
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
    <ARTICLE>
        <SUPPLIER_AID>
            <xsl:value-of select="my:products/my:product/my:ean" />
        </SUPPLIER_AID>
    </ARTICLE>
    </xsl:template>
</xsl:stylesheet>
 类似资料:
  • 我试图将Excel xml文件的一部分呈现为超文本标记语言,以便在翻译(外语翻译)计算机辅助翻译工具中的部分内容时改进预览。 我有以下xml: 我试图从每行中提取第二个数据元素并显示它,但我根本无法显示它。我认为这与名称空间有关,我肯定遗漏了什么,但看不出是什么。这就是我正在使用的: 有人能帮我吗? 我应该补充一点,我正在使用Treebeard来测试这个,它用这些错误验证xml(我无法控制)...

  • 我有这个xml是架构版本3.0http://www.test.com/Service/v3。我需要将其降级到版本1http://www.test.com/Service/v1.为此,我使用XSL来转换它。 但我得到这样的结果 在我的输出XML中,我得到了这个 为什么将其添加到NS2:消息中? 它不在输入xml中。 我遗漏了一些东西。如果有人能指出这个问题,我将不胜感激。 我希望在输出中创建以下内容

  • 我是XSLT的新手,命名空间有问题。这是我必须转换的XML: 我正在使用以下XSLT: 结果是: 我试图删除结果输入顺序中的名称空间,但它不适合我。有人能帮我学习XSLT吗?谢谢

  • 我需要一个简单的xslt,它接受输入并提供如下所述的输出。我已经编写了xslt,但名称空间被忽略了。你能帮我一下吗。 输入消息: 预期输出消息: 实际输出消息: XSLT:

  • 我正在尝试创建一个XSLT文件,我可以让它工作,而无需在任何一个文件中包含名称空间,但只要我在其中包含名称空间,它就会停止工作。以下是我正在使用的示例。 我的XML文件 我的转换文件。 我的结果 如果我将上述内容更改为此,则不会。我的新XML文件 我的新转换文件。 我现在在转换后的文件中没有数据了?如果这个问题是基本的,请原谅,我没有XSLT的经验,目前我正努力解决这个问题。

  • 如果我删除所有命名空间和前缀,我的XSLT转换将完美运行。 我曾尝试过几次引入名称空间,但最终总是出现某种错误或没有输出,因此我在这里寻求一些帮助和理解。 我的预期输出,缩减为命名空间和前缀,是: 再次缩减的XML输入是: 为了实现正确的命名空间转换,我需要向XSLT头中添加什么?