提供xml标头时,xsl模板匹配不起作用

时间:2019-02-27 15:42:56

标签: xslt

我尝试根据此站点上的解释合并2 web.xml,但是我遇到了问题。

如果我的输入文件以如下所述的简单标题开头,则一切正常。

<?xml version="1.0" encoding="UTF-8"?>
<web-app> <!-- no schema information here -->
   <servlet id="identifier">
      ...
   </servlet>
</web-app>

但是,如果我使用这样的输入文件,则匹配不起作用

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

   <servlet id="identifier">
      ...
   </servlet>
</web-app>

我使用的xsl模板匹配就是这个。

<xsl:template name="main" match="/web-app/servlet[@id='identifier']">

有什么问题吗?

感谢您的帮助。

编辑:我正在使用saxon 8.7

1 个答案:

答案 0 :(得分:0)

Saxon 8.7是XSLT 2.0处理器,因此您应该能够包括:

xpath-default-namespace="http://xmlns.jcp.org/xml/ns/javaee"

xsl:stylesheet打开标记中,以使模板的match表达式(以及所有其他XPath表达式)寻址XML的元素-请参见:https://www.w3.org/TR/xslt20/#unprefixed-qnames