Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在xslt v2.0的内部父组中添加命名空间_Xslt_Xslt 2.0 - Fatal编程技术网

在xslt v2.0的内部父组中添加命名空间

在xslt v2.0的内部父组中添加命名空间,xslt,xslt-2.0,Xslt,Xslt 2.0,我尝试了所有的代码,我在互联网上看到的相关要求,因为我已经。但是,在我的例子中,我还需要在内部父组中填充名称空间。我的XSLT没有按预期工作。有人能帮我吗?多谢各位 XSLT代码: 输入: 预期产出: 生成的输出: 听起来好像要从记录和数据中删除名称空间: 给予 您似乎不知道名称空间继承。记录根元素处的默认命名空间声明应用于输入文档的所有元素。因此,为了获得请求的结果,您必须将所有元素从其命名空间中移除,同时保持Section元素及其子元素未经处理: XSLT2.0 补充: 如果输入具有需要复制

我尝试了所有的代码,我在互联网上看到的相关要求,因为我已经。但是,在我的例子中,我还需要在内部父组中填充名称空间。我的XSLT没有按预期工作。有人能帮我吗?多谢各位

XSLT代码:

输入:

预期产出:

生成的输出:


听起来好像要从记录和数据中删除名称空间:

给予


您似乎不知道名称空间继承。记录根元素处的默认命名空间声明应用于输入文档的所有元素。因此,为了获得请求的结果,您必须将所有元素从其命名空间中移除,同时保持Section元素及其子元素未经处理:

XSLT2.0

补充: 如果输入具有需要复制的属性,则将第一个模板更改为:

<xsl:template match="*">
    <xsl:element name="{local-name()}">
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
    </xsl:element>
</xsl:template>

您当前的输出是什么?因为根元素有xmlns=www.hdgd.co,所以XSLT没有必要也没有办法在子元素或孙子元素上强制执行相同的声明xmlns=www.hdgd.co。我编辑了预期的输出。不应具有命名空间。谢谢。谢谢你的反馈。但是,当我在数据元素中放置属性时。当我尝试使用您提供的解决方案时,它没有复制属性。您的输入示例中没有属性,因此我没有处理它们。请看我答案的补充。非常感谢。
<Record xmlns="www.hdgd.co">
<Data>
    <Section>
        <ID>1234DFD57</ID>
    </Section>
</Data>
<Record>
<Data>
    <Section xmlns="www.hdgd.co">
        <ID>1234DFD57</ID>
    </Section>
</Data>
<Record xmlns="www.hdgd.co">
<Data>
    <Section>
        <ID>1234DFD57</ID>
    </Section>
</Data>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
  xpath-default-namespace="www.hdgd.co">

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="Record | Data">
        <xsl:element name="{local-name()}">
            <xsl:apply-templates select="@* | node()"/>
        </xsl:element>
    </xsl:template>
</xsl:transform>
<?xml version="1.0" encoding="UTF-8"?><Record>
<Data>
    <Section xmlns="www.hdgd.co">
        <ID>1234DFD57</ID>
    </Section>
</Data>
</Record>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xpath-default-namespace="www.hdgd.co"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="*">
    <xsl:element name="{local-name()}">
        <xsl:apply-templates/>
    </xsl:element>
</xsl:template>

<xsl:template match="Section">
    <xsl:copy-of select="."/>
</xsl:template>

</xsl:stylesheet> 
<xsl:template match="*">
    <xsl:element name="{local-name()}">
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
    </xsl:element>
</xsl:template>