Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Xml &引用;模板规则匹配无命名空间中的元素”;消息_Xml_Xslt_Namespaces - Fatal编程技术网

Xml &引用;模板规则匹配无命名空间中的元素”;消息

Xml &引用;模板规则匹配无命名空间中的元素”;消息,xml,xslt,namespaces,Xml,Xslt,Namespaces,我意识到名称空间问题非常复杂,但我从撒克逊得到: 警告SXXP0005:源文档位于命名空间中 ,b但所有模板规则都匹配 不在名称空间中的元素(使用--suppressXltNamespacechec k:on到 避免此警告) 我的源文件的根元素是: <?xml version="1.0" encoding="UTF-8"?> <topic xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xsi="htt

我意识到名称空间问题非常复杂,但我从撒克逊得到:

警告SXXP0005:源文档位于命名空间中 ,b但所有模板规则都匹配 不在名称空间中的元素(使用--suppressXltNamespacechec k:on到
避免此警告)

我的源文件的根元素是:

    <?xml version="1.0" encoding="UTF-8"?>
    <topic xmlns:xi="http://www.w3.org/2001/XInclude" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://docbook.org/ns/docbook" 
    xml:id="103829">
    <info>
        <title>My title</title>
    </info>
    <procedure>
...

我的头衔
...
我的XSL是:

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" 
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://docbook.org/ns/docbook">

<!-- Dummy template, just trying to match anything -->      
    <xsl:template match="procedure">
        <orderedlist>
            SOME TEXT
            <xsl:copy-of select="*"/>
        </orderedlist>
    </xsl:template>

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

一些文本
如前所述,模板不匹配。但我不知道为什么:我认为在源文件和XSL文件中使用相同的默认名称空间可以防止此类错误

另外,我想我可以声明一个前缀并将其应用于所有元素。但是避免前缀不是默认名称空间的全部要点吗?

您可以使用(XSLT 2和更高版本)
xpath默认名称空间=”http://docbook.org/ns/docbook“
xsl:stylesheet
上,如果希望模式和表达式(如
procedure
)匹配/选择该命名空间中的元素。否则,
procedure
在没有命名空间的情况下匹配/选择该名称的元素

一个
xmlns=”http://docbook.org/ns/docbook“样式表中的
仅用于将结果元素(如示例中的orderedlist)放入该名称空间