Question

J'ai un .xsl qui transforme xml de DocBook à DITA. Un problème que je suis en cours d'exécution en est que les thats fichier .dita créé Détruit xrefs. Pour résoudre ce problème, je veux essayer de faire appliquer une version dita au cours de la Transform (je l'espère des thats possible). Ma question est: Comment dois-je le respect document transformé DITA 1.2 lorsqu'il est transformé

.

La transformation est de la DITA Open Toolkit 1.5.2 en utilisant le plugin docbook2dita Voici la .xsl actuelle:

<?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>
Était-ce utile?

La solution

XSLT 2.0 est idéal pour valider le résultat de la transformation à un schéma XML spécifique . la validation DTD n'est pas prise en charge.

Donc, si vous trouvez un schéma XML pour DITA (et il semble être certains DITA schéma existant), vous pouvez valider facilement. Voici un exemple, tiré du livre de Michael Kay "XSLT 2.0 et XPath 2.0", comment effectuer la validation du résultat-document:

<?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>

lorsque cette transformation est appliquée sur le document XML suivant :

<?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>

le processeur Saxon EE 9.2.1.2 produit les messages d'erreur suivants:

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

Voici un résumé comment obtenir la validation de schéma XML du document de résultat:

.1. Importation au moins un schéma, par exemple:

<xsl:import-schema namespace="http://www.w3.org/1999/xhtml" 
   schema-location="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"/>

0,2. Sur l'élément <xsl:result-document> spécifier validation stricte, comme ceci:

  <xsl:result-document validation="strict">
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top