2017-07-25 1 views
0

Ich bin neu in Java. Ich habe ein ähnliches Szenario wie [Catch output stream of xsl result-document aber ich verstehe nicht, was als href und Basis Parameter zu übergeben ..Wie implementiert man saxon OutputURIResolver in Java?

Mein XSLT (Ergebnis-Dokument) wie folgt:

<xsl:template match="/" mode="create-text-file"> 
     <xsl:param name="book-name" tunnel="yes"/> 

     <xsl:result-document href="{$book-name}.xml" 
      doctype-public=" test" 
      doctype-system="test.dtd"> 
      <xsl:apply-templates/> 
     </xsl:result-document> 
    </xsl:template> 

Ein anderer:

<xsl:result-document href="{$book-name}.opf" 
          doctype-public="" 
          doctype-system="" 
          indent="yes"> 

      <xsl:apply-templates mode="#current"/> 
     </xsl:result-document> 

Parameter Buch-Name wird immer als:

<xsl:template match="document-node()"> 
     <xsl:variable name="book-name" select="tps:get-file-name(document-uri(/))"/> 

können Sie mir bitte erklären, wi th this Ergebnis-Dokumente?

Vielen Dank im Voraus.

Antwort

0

OutputURIResolver ist ein Callback: das bedeutet, dass Sie die Implementierung der resolve() -Methode bereitstellen, und Saxon ruft Ihre Implementierung auf. Sie brauchen sich also keine Gedanken darüber zu machen, was Sie als Basis- und href-Argumente weitergeben sollen, weil Sie die Methode nicht aufrufen, Saxon. In der Regel wird das href-Argument als (erweiterter) Wert des href-Attributs Ihres Aufrufs an xsl: result-document übergeben, und der Basiswert ist der "Basisausgabe-URI", der standardmäßig die als Hauptausgabe angegebene Datei verwendet der Transformation (Option -o in der Befehlszeile).

+0

Sir, können wir einen Ordnerpfad oder einen benutzerdefinierten Speicherort als Basis angeben, wenn ich kein Befehlszeilenargument verwende? Und was ich verstanden habe, ist, wenn wir xslt Zip-Paket extrahiert haben (entsprechend meinem Szenario) OutputURIResolver ist dies erhalten HREF-Wert. – user2490093

+0

Wenn Sie die s9api-Schnittstelle verwenden, können Sie den Basis-Ausgabe-URI mit 'XsltTransformer.setBaseOutputURI()' festlegen. Es gibt keine Entsprechung in JAXP, da JAXP für XSLT 1.0 entwickelt wurde. –

Verwandte Themen