Frage

Ich mag eine DocBook XML-Dokument haben, die Inhalte für verschiedene Zielgruppen hat. Gibt es einen Filter, der mir ermöglicht nur das Zeug, um herauszufiltern, die für „advanced“ Benutzer?

Das Niveau Attribut wird von mir erfunden, um auszudrücken, was ich im Sinne habe.

 <?xml version="1.0"?>
 <book>  
   <title lang="en">Documentation</title>

   <chapter id="introduction" level="advanced">  
       <title>Introduction for advanced users</title>
   </chapter>

   <chapter id="introduction" level="basic">  
      <title>Introduction for basic users</title>
   </chapter>  

   <chapter id="ch1">
      <para level="basic">Just press the button</para>
      <para level="advanced">
           Go to preferences to set your
           needs and then start the process 
           by pressing the button.
      </para>
   </chapter>
</book>
War es hilfreich?

Lösung

DocBook keinen level Attribut. Vielleicht bedeutete Sie userlevel ?

Wenn Sie die DocBook XSL Stylesheets verwenden, um Ihre Dokumente zu verwandeln, haben sie eine integrierte Unterstützung für die Profilierung (bedingter Text). Um es zu benutzen Sie müssen

  1. verwenden, um die Profilierungs-fähige Version des Stylesheets (z Verwendung html/profile-docbook.xsl statt des üblichen html/docbook.xsl) und

  2. geben Sie die Attributwerte Sie über eine Parameter (zB Set profile.userlevel zu basic).

Kapitel 26 von Bob Stayton der DocBook XSL: The Complete Guide hat alle Details.

Andere Tipps

Zwei Wege, aus der Spitze von meinem Kopf:

  1. Schreiben Sie eine schnelle Skript, das die level als Parameter übernimmt und unter Verwendung von XPath oder reguläre Ausdrücke, die nur spuckt die XML Sie wollen.
  2. schreiben XSLT-Transformation , die die XML ausspucken werden Sie wollen.

(2) ist sauberer, aber (1) ist wahrscheinlich schneller zu schreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top