DocBook XSL включает в себя шаблон, который соответствует всем элементуПерекрытие матч = «*» шаблон из DocBook XSL
<xsl:template match="*">
<xsl:message> .... </xsl:message>
</xsl:template>
Мне нужно изменить его с другим шаблоном, потому что мой источник XML дерево содержит более, что как раз XML DoocBook. Если я укажу такой шаблон в файле, он переопределит все шаблоны в DocBook XSL. Кажется, что все импортированные шаблоны имеют приоритет только в порядке импорта, а НЕ в зависимости от того, насколько конкретным является шаблон.
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:db="http://docbook.org/ns/docbook" version="1.0">
<xsl:import href="docbook-xsl-ns/xhtml/docbook.xsl" />
<xsl:import href="copy.xsl"/>
<xsl:template match="/">
<xsl:apply-templates select="//db:book"/>
</xsl:template>
</xsl:stylesheet>
copy.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<!-- go process attributes and children -->
<xsl:apply-templates select="@*|node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
источник Пример XML
<?xml version="1.0" encoding="UTF-8"?>
<root>
<http-host>localhost</http-host>
<book xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML" xml:id="course.528" xml:lang="en" version="5.0">
<info>
<title>Postoperative Complications</title>
</info>
<chapter xml:id="chapter.1">
<title>INTRODUCTION</title>
<para>Postoperative complications are a constant threat to the millions ....</para>
</chapter>
</book>
<errors></errors>
</root>
Это верно как для Xalan и процессоров xsltproc. Как переопределить этот шаблон без изменения источника DocBook XSL. Я пытался возиться с приоритетами, но это не сработало.
Это скорее работа, но я думаю, что это сработает в моем случае; все элементы DocBook объединены, остальные - пользовательские элементы из локального пространства имен. Тем не менее, почему более конкретные шаблоны, импортированные до общего шаблона, не применяются. Общий шаблон, импортированный позже, переопределяет их все. Есть ли способ отменить это поведение? Если я буду делать это с приоритетами, есть ли способ увидеть, какие приоритеты есть во время импорта? –