Принудительная версия Ditita для Ditita Open Toolkit 1.5.2 XSLT StyleSheet
Вопрос
У меня есть .xsl, который преобразует XML из Docbook в DITA. Проблема, в которой я работаю, состоит в том, что файл .dita создан, разрушает xrefs. Чтобы исправить это, я хочу попытаться обеспечить принуждение версии DITA во время преобразования (надеюсь, что это возможно). Итак, мой вопрос: как у меня есть трансформированный документ уважения DITA 1.2, когда он преобразуется.
Преобразование находится из Ditita Open Toolkit 1.5.2, используя плагин Docbook2Dita вот текущий .xsl:
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" >
<xsl:import href="./xslt/ditabaseOutput.xsl"/>
<xsl:import href="./xslt/dbReader.xsl"/>
<xsl:output
method="xml"
indent="yes"
omit-xml-declaration="no"
standalone="no"
doctype-public="-//OASIS//DTD DITA Composite//EN"
/>
<xsl:template match="/">
<xsl:apply-templates select="." mode="topic.topic.in"/>
</xsl:template>
</xsl:stylesheet>
Решение
XSLT 2.0 идеально подходит для проверки результата преобразования в определенную XML-схему. Отказ Валидация DTD не поддерживается.
Итак, если вы найдете схему XML для DITA (и там, кажется, какая-то дита схема Существуют), вы можете легко подтвердить его. Вот пример, взятый из книги Майкла Кей «XSLT 2.0 и XPath 2.0», как выполнить проверку результата-документа:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:import-schema namespace="http://www.w3.org/1999/xhtml"
schema-location="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"/>
<xsl:output method="xhtml" indent="yes"/>
<xsl:template match="/">
<xsl:result-document validation="strict">
<html>
<head>
<title><xsl:value-of select="poem/title"/></title>
</head>
<body>
<h1 align="center"><xsl:value-of select="poem/title"/></h1>
<p align="center"><i>by </i><xsl:value-of select="poem/author/name"/>
(<xsl:value-of select="poem/author/(birth,death)" separator="-"/>)</p>
<xsl:for-each select="poem/stanza">
<p>
<xsl:for-each select="line">
<xsl:value-of select="."/>
<xsl:if test="position() != last()"><br/></xsl:if>
</xsl:for-each>
</p>
</xsl:for-each>
</body>
</html>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется на следующем XML-документе:
<?xml version="1.0"?>
<poem xmlns="http://poetry.org/ns"
xsi:schemaLocation="http://poetry.org/ns poem.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<author>
<name>Rupert Brooke</name>
<birth>1887-08-03</birth>
<death>1915-04-23</death>
</author>
<date>1912</date>
<title>The Hill</title>
<stanza>
<line>Breathless, we flung us on the windy hill,</line>
<line>Laughed in the sun, and kissed the lovely grass.</line>
<line>You said "Through glory and ecstasy we pass;</line>
<line>Wind, sun, and earth remain, and birds sing still,</line>
<line>When we are old, are old...." "And when we die</line>
<line>All's over that is ours; and life burns on</line>
<line>Through other lovers, other lips" said I,</line>
<line>"Heart of my heart, our heaven is now, is won!"</line>
</stanza>
<stanza>
<line>We are Earth's best, that learnt her lesson here.</line>
<line>Life is our cry. We have kept the faith!" we said;</line>
<line>"We shall go down with unreluctant tread</line>
<line>Rose-crowned into the darkness!".... Proud we were,</line>
<line>And laughed, that had such brave true things to say.</line>
<line>-- And then you suddenly cried, and turned away.</line>
</stanza>
</poem>
Процессор Saxon EE 9.2.1.2 создает следующие сообщения об ошибках:
SystemID: C:\Books\XSLT 2.0 and XPath 2.0\Downloads\Chapter4\ch04\poem-to-xhtml.xsl
Engine name: Saxon-EE 9.2.1.2
Severity: error
Description: Failed to compile stylesheet. 1 error detected.
SystemID: C:\Books\XSLT 2.0 and XPath 2.0\Downloads\Chapter4\ch04\poem-to-xhtml.xsl
Engine name: Saxon-EE 9.2.1.2
Severity: fatal
Description: Attribute align is not permitted in the content model of the complex type of element h1
Start location: 16:0
URL: http://www.w3.org/TR/xslt20/#err-XTTE1510
Вот сводка, как добиться проверки схемы XML Результат документа:
.1. Импортировать хотя бы одну схему, например:
<xsl:import-schema namespace="http://www.w3.org/1999/xhtml"
schema-location="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"/>
.2. На <xsl:result-document>
Элемент Укажите строгую проверку, как это:
<xsl:result-document validation="strict">