Соответствие шаблона xsl не работает, если указан заголовок xml - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь объединить 2 файла web.xml на основе объяснений, найденных на этом сайте, но у меня возникла проблема.

Если мои входные файлы начинаются с простого заголовка, как описано ниже, все в порядке.

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

но, если я использую входной файл, подобный этому, match не работает

<?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']">

Есть ли у вас какие-либо проблемы?

Спасибо за вашу помощь.

edit: я использую saxon 8.7

1 Ответ

0 голосов
/ 27 февраля 2019

Saxon 8.7 - это процессор XSLT 2.0, поэтому вы должны иметь возможность включить:

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

в свой тег xsl:stylesheet open, чтобы сделать выражение match вашего шаблона (и все другие выражения XPath) обращаться к элементам вашего XML - см .: https://www.w3.org/TR/xslt20/#unprefixed-qnames

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...