Xml &引用;模板规则匹配无命名空间中的元素”;消息
我意识到名称空间问题非常复杂,但我从撒克逊得到: 警告SXXP0005:源文档位于命名空间中 ,b但所有模板规则都匹配 不在名称空间中的元素(使用--suppressXltNamespacechec k:on到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
避免此警告) 我的源文件的根元素是:
<?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)放入该名称空间