Monday, 15 May 2017

Xsl Ausgabe Methode Binär Optionen


Ich bin mit Apache Camel Datei Komponente und xslt Komponente Ich habe eine Route, wo ich eine xml-Nachricht abholen, umwandeln mit xslt und Drop auf einen anderen Ordner. Apache Kamel DSL Route. Ich erwähne Apache Kamel auch hier zu überprüfen, ob es einen Weg gibt Um den Ausgabedateinamen mit Camel zu setzen, denke ich, auch ohne Camel, da wäre ein Mechanismus mit reinem XSLT. Ich muss die transformierte Ausgabedatei umbenennen. Aber immer bekomme ich den gleichen Eingabedateinamen mit dem transformierten Inhalt im Ausgabeordner. eg Eingabedatei Ausgabedatei mit der Transformation angewendet. Was ich suche ist wie die Ausgabedateiname Die Ausgabedaten sind korrekt. Ich habe versucht xsl Ergebnis-Dokument href aber dann die Ausgabe xml ist leer Bitte help. Output XML bei der Verwendung von xsl Ergebnis - dokument href in XSLT. Output XML, wenn nicht mit xsl Ergebnis-Dokument href in XSLT. Edit bearbeitet die XSLT wie pro MartinHonnen s comment. Running XSLT aus der Befehlszeile. A Befehl ist verfügbar, um ein bestimmtes Stylesheet auf eine gegebene Quelle XML anzuwenden Document Für simp Le Transformationen auf der Java-Plattform, verwenden Sie die command. java - s Quelle - xsl stylesheet - o output. wo Quelle Stylesheet und Ausgabe sind die Quell-XML-Datei, die XSLT Stylesheet, B und die Ausgabedatei jeweils. Für die Plattform, den Befehl Ist einfach. Transform - s source - xsl stylesheet - o output. Für eine schema-aware Transformation, spezifizieren Sie die Option - sa oder auf der Java-Plattform verwenden Sie nur den alternativen Einstiegspunkt Für weitere Details siehe Schema-Aware Transformations. For Abwärtskompatibilität mit Vorgängerversionen können die Präfixe - s und - xsl weggelassen werden, vorausgesetzt, dass das Quelldokument und das Stylesheet die letzten beiden Optionen vor den Schlüsselwortparametern sind. Im Allgemeinen bestehen die Argumente aus einer Anzahl von Optionen, die vorangestellt sind, und dann optional Rückwärtskompatibilität der Quelldateiname und / oder Stylesheet-Dateiname, dann eine Anzahl von Parametern, die als Keyword-Wertepaare zur Verfügung gestellt werden. Die Optionen müssen zuerst kommen, dann die Dateinamen falls vorhanden, dann die Parameter. Für das zu arbeiten , Müssen alle notwendigen Java-Komponenten auf dem Klassenpfad zur Verfügung stehen. Siehe Installation für Details zum Einrichten des Klassenpfads. Wenn Sie keine zusätzlichen Java-Bibliotheken verwenden, können Sie die einfachere Form des Befehls verwenden dieses Beispiel für die Home Edition. java - jar dir Optionen params. Hinweis, dass dies nicht funktioniert, wenn Sie Benutzer-schriftliche Erweiterungsfunktionen oder andere Klassen aus dem Klassenpfad laden müssen. Es wird also nicht funktionieren, wenn Ihr Stylesheet Erweiterungsfunktionen oder andere Plug-In-Komponenten verwendet Wie z. B. Parser oder URI-Resolver. Die Optionen sind wie folgt in beliebiger Reihenfolge. Verwenden Sie die xml-Stylesheet-Verarbeitungsanweisung im Quelldokument, um das zu verwendende Stylesheet zu identifizieren Das Stylesheet-Argument darf nicht auf der Kommandozeile vorhanden sein. Filenamen ist entweder a Dateiname oder eine Liste von Dateinamen, die durch Semikolons getrennt sind, sind die Dateien OASIS XML-Kataloge, die verwendet werden, um zu definieren, wie öffentliche Identifikatoren und Systemkennungen URIs, die in einem Quelldokument, Stylesheet oder Schema verwendet werden, zu b sind E umgeleitet, in der Regel zu Ressourcen, die lokal verfügbar sind Weitere Details finden Sie unter. die Konfigurationsinformationen sollten aus der mitgelieferten Konfigurationsdatei entnommen werden. Alle Optionen, die auf der Befehlszeile angegeben werden, überschreiben die in der Konfigurationsdatei angegebenen Optionen. Verwenden Sie den angegebenen CollectionURIResolver, um Sammlungs-URIs zu verarbeiten Die Auflistungsfunktion Der CollectionURIResolver ist eine benutzerdefinierte Klasse, die die Schnittstelle implementiert. Setting - dtd auf Anfragen DTD-basierte Validierung der Quelldatei und aller Dateien, die mit der Dokumentfunktion gelesen werden Benötigt einen XML-Parser, der die Validierung unterstützt Die Einstellung - dtd off Das ist die Standard-Unterdrückung der DTD-Validierung Die Einstellung - dtd Wiederherstellung führt die DTD-Validierung durch, behandelt aber den Fehler als nicht-tödlich, wenn es fehlschlägt. Beachten Sie, dass jede externe DTD wahrscheinlich auch dann gelesen wird, wenn sie nicht für die Validierung verwendet wird, da DTDs Definitionen von Entitäten enthalten können. Normal, wenn eine Validierung mit einer DTD oder einem Schema angefordert wird, werden alle festen oder Standardwerte definiert Die DTD oder das Schema wird erweitert. Spezifizieren - Erweiterung unterdrückt diese Bei DTD-definierten Vorgaben kann dies nicht mit allen XML-Parsern funktionieren. Es funktioniert mit dem Xerces-Parser-Standard für Java und dem Microsoft-Parser-Standard für. Display eine Ausführung Plan für das Stylesheet Dies ist eine Darstellung des Ausdrucksbaums nach dem Rewriting durch das Optimierer Es konvertiert die XSLT-Befehle und die XPath-Ausdrücke in einen einzelnen Baum Wenn kein Dateiname angegeben ist, wird die Ausgabe an den Standardfehlerstrom gesendet. Die Ausgabe ist ein Baum Im XML-Format. Wenn ext off angegeben ist, unterdrücken Sie Anrufe auf dynamisch geladenen externen Java-Funktionen Dies wirkt sich nicht auf Anrufe auf integrierte Erweiterungsfunktionen aus, einschließlich Saxon - und EXSLT-Erweiterungsfunktionen Diese Option ist nützlich beim Laden eines nicht vertrauenswürdigen Stylesheets, möglicherweise von einem entfernten Standort aus Mit einer URL sorgt es dafür, dass das Stylesheet keine beliebigen Java-Methoden aufrufen kann und dadurch einen privilegierten Zugriff auf Ressourcen auf Ihrem Rechner erhält. Wählt die init aus Ial-Modus für die Transformation Wenn dies namenpaced ist, kann es als localname geschrieben werden. Der Wert ist der Name einer vom Benutzer bereitgestellten Klasse, die die Schnittstelle implementiert, die dieser Initialisierer während des Initialisierungsprozesses aufgerufen wird, und kann verwendet werden, um beliebige Optionen festzulegen Erforderlich für die Programmierung programmgesteuert Es ist besonders nützlich für solche Aufgaben wie die Registrierung von Erweiterungsfunktionen, Kollatierungen oder externen Objektmodellen, insbesondere in Sachsen-HE, wo die Option dies nicht existiert, über eine Konfigurationsdatei. Wählt die ursprüngliche Namensvorlage aus Ausgeführt Wenn dies namentlich ist, kann es als Ortsname geschrieben werden Wenn diese Option verwendet wird, müssen Sie keine Quelldatei liefern, aber wenn Sie dies tun, müssen Sie es mit der Option - s. If - l oder - l eingeben Ist spezifiziert, bewirkt, dass Linien - und Spaltennummern für Quelldokumente gepflegt werden. Diese sind mit den Erweiterungsfunktionen zugänglich. Saxon-Zeilennummer und sächsische Spaltennummer Zeilennummern sind nützlich, wenn der Zweck des Stylesheets ist Fehler oder Anomalien in der Quell-XML-Datei finden Ohne diese Option stehen Zeilennummern zur Verfügung, während Quelldokumente analysiert und validiert werden, aber sie werden nicht in der Baumdarstellung des Dokuments beibehalten. Verwenden Sie den angegebenen Empfänger, um die Ausgabe von der xsl-Nachricht zu verarbeiten Die Klasse muss die Klasse implementieren Diese Schnittstelle ähnelt einem SAX ContentHandler, es nimmt einen Strom von Ereignissen, um die Ausgabe zu generieren. Im Allgemeinen ist der Inhalt einer Nachricht ein XML-Fragment. Standardmäßig wird der Standard-XML-Emitter verwendet, der so konfiguriert ist, dass er auf den Standard schreibt Fehler Stream, und keine XML-Deklaration enthalten Jede Nachricht wird als neue Sequenz von Anrufen an diesen Receiver ausgegeben wird wie folgt gibt es einen einzigen offenen Anruf zu Beginn der Transformation und einen einzigen engen Anruf am Ende und jede Bewertung von Eine xsl-Meldungsanweisung startet mit einem startDocument-Aufruf und endet mit endDocument Das startDocument - Ereignis hat ein Eigenschaftenargument, das angibt, ob das Kündigungs-Ja angegeben wurde, und das l OcationId auf Anrufe wie startElement und Zeichen können verwendet werden, um den Ort im Stylesheet zu identifizieren, in dem die Meldungsdaten entstanden sind, indem sie die gelieferte locationId in einem Aufruf an oder an getLineNumber auf die gleiche Klasse übergeben, um eine xsl-Meldung auszugeben Der JAXP ErrorListener, wie in der JAXP-Dokumentation beschrieben. Legt den Wert von current-dateTime und implizit-timezone für die Transformation fest. Dies ist für das Testen ausgelegt, um reproduzierbare Ergebnisse zum Vergleich mit Referenzergebnissen zu erhalten oder zu testen, welche Stylesheets verarbeiten können Signifikante Daten und Zeiten wie Ende des Jahres verarbeiten. Sendausgabe an benannte Datei In Abwesenheit dieser Option gehen die Ergebnisse auf die Standardausgabe Wenn das Quellargument ein Verzeichnis identifiziert, ist diese Option obligatorisch und muss auch ein Verzeichnis identifizieren Fertigstellung wird eine Ausgabedatei für jede Datei im Quellverzeichnis enthalten. Wenn das Stylesheet sekundäre Ausgabedateien mit dem xsl-Ergebnisdokument schreibt Nt Anweisung dieser Dateiname fungiert als Basis-URI für das href-Attribut dieser Anweisung In Abwesenheit dieser Option werden sekundäre Ausgabedateien in Bezug auf das aktuelle Arbeitsverzeichnis geschrieben Die Datei wird erstellt, wenn es nicht bereits vorhanden ist, werden notwendige Verzeichnisse auch sein Erstellt Wenn die Datei existiert, wird sie auch dann überschrieben, wenn die Transformation fehlschlägt, aber nicht, wenn die Transformation keinen prinzipiellen Ergebnisbaum erzeugt. Set Optimierungsstufe Der Wert ist eine Ganzzahl im Bereich 0 keine Optimierung auf 10 volle Optimierung aktuell alle anderen Werte als 0 Ergebnis in voller Optimierung, aber das wird sich wahrscheinlich in Zukunft ändern Die Voreinstellung ist die vollständige Optimierung Diese Funktion ermöglicht die Optimierung unterdrückt werden, in Fällen, in denen die Reduzierung der Kompilierzeit wichtig ist oder wo die Optimierung dem Debugging im Wege steht oder Erweiterungsfunktionen mit Side - Effekte verhalten sich unvorhersehbar Beachten Sie jedoch, dass auch ohne Optimierung, faul Auswertung kann immer noch die Auswertung Ordnung zu Nicht wie erwartet sein. Verwenden Sie den angegebenen OutputURIResolver, um Ausgabe-URIs zu verarbeiten, die im href-Attribut des xsl-Ergebnisdokuments erscheinen. Der OutputURIResolver ist eine benutzerdefinierte Klasse, die die Schnittstelle implementiert. Normalerweise wird, wenn die Validierung der Ergebnisdokumente angefordert wird, ein Validierungsfehler Tödlich Einstellung der Option - outval-Wiederherstellung führt dazu, dass solche Validierungsfehler als Warnungen behandelt werden. Die Validierungsmeldung wird sowohl auf den Standardfehlerstrom als auch ggf. als Kommentar im Ergebnisdokument selbst geschrieben. Verwenden Sie den PTreeURIResolver Diese Option ist in Sächsisch - PE und Saxon-EE nur Es kann nicht in Verbindung mit der Option - r verwendet werden, und es schaltet automatisch die Optionen - u und - sa ein. Der Effekt ist zweifach Zuerst werden sächsisch-spezifische Dateierweiterungen in URIs einschließlich des URI der Quelldokument auf der Kommandozeile Derzeit ist die einzige sächsisch-spezifische Dateierweiterung, die angibt, dass das Quelldokument in Form eines sächsischen PTree geliefert wird Inary-Darstellung eines XML-Dokuments, entworfen für die Geschwindigkeit der Beladung Zweitens werden sächsisch-spezifische Abfrageparameter in einem URI erkannt. Derzeit ist der einzige Abfrageparameter, der erkannt wird, wert. Dies kann die Werte strengen lax oder strip nehmen. Zum Beispiel lädt ein Dokument mit Strenge Schema-Validierung. Mit der Standardeinstellung wird auf dem Befehl die Java VM beendet und ein Exit-Code zurückgegeben, wenn ein Fehler auftritt. Dies ist nützlich, wenn man von einer Betriebssystem-Shell ausläuft. Bei der Einstellung beenden Sie den Befehl stattdessen eine RunTimeException, die mehr ist Nützlich, wenn der Befehl von einer anderen Java-Anwendung wie Ant. Use den angegebenen URIResolver aufgerufen wird, um alle URIs zu verarbeiten Der URIResolver ist eine benutzerdefinierte Klasse, die die Klasse erweitert, deren Funktion es ist, einen URI als String zu übergeben und zurückzugeben A SAX InputSource Es wird aufgerufen, um URIs zu verarbeiten, die in der Dokumentfunktion verwendet werden, in den xsl include - und xsl-Import-Elementen, und wenn - u auch angegeben ist, um die URIs des Quellfilms zu verarbeiten E und Stylesheet-Datei auf der Kommandozeile zur Verfügung gestellt. Performiert die Transformation N mal, wobei N die angegebene Ganzzahl ist Diese Option ist für die Leistungsmessung nützlich, da die Timings für die erste Transformation oft von der Java-Warmlaufzeit dominiert werden. Identifiziert die Quelldatei Oder das Verzeichnis Obligatorisch, es sei denn, die Option - it wird verwendet Die Quelldatei wird analysiert, um einen Baum zu erstellen, und der Dokumentknoten dieses Baums fungiert als Anfangskontext für den Namen identifiziert ein Verzeichnis, alle Dateien im Verzeichnis werden verarbeitet Einzeln In diesem Fall ist die Option - o obligatorisch und muss auch ein Verzeichnis identifizieren, um die entsprechenden Ausgabedateien zu enthalten. Ein Verzeichnis muss als Dateiname angegeben werden, nicht als Quelldokument kann angegeben werden, um die Quelle vom Standard zu nehmen Input Für die Rückwärtskompatibilität kann der Quelldateiname auch unmittelbar vor dem Stylesheet-Dateinamen angegeben werden, ohne dass das Flag - s angegeben ist, sofern die Option - it nicht vorhanden ist. Überprüfen Sie einen Schema-awar E Transformation Benötigt Saxon-EE installiert werden Diese Optionen sind nicht erforderlich, wenn entweder eine andere Option, die Schema-Bewusstsein impliziert, zum Beispiel vorhanden ist - val streng oder b das Stylesheet enthält eine xsl Import-Schema-Deklaration. Spezifiziert, was Whitespace aus entfernt werden soll Quelldokumente gelten sowohl für das Hauptquellendokument als auch für alle Dokumente, die zum Beispiel mit der Dokumentfunktion geladen werden. Der Standardwert ist nicht erkennbar, dass alle ignorierbaren Whitespace abgestreift sind. Whitespace-Textknoten sind ignorierbar, wenn sie in Elementen erscheinen, die in der DTD oder dem Schema definiert sind Inhalt Spezifizieren aller Streifen aller Whitespace-Textknoten aus Quelldokumenten vor jeder weiteren Bearbeitung, unabhängig von xsl-Streifenraum-Deklarationen im Stylesheet oder beliebigen xml-Space-Attributen im Quelldokument Angabe von ignorierbaren Streifen Alle ignorierbaren Whitespace-Textknoten aus Quelldokumenten vor jedem Weiterverarbeitung, unabhängig von xsl-Streifenraum-Deklarationen im Stylesheet oder irgendwelche Xml-Space-Attribute im Quelldokument Die Angabe von keiner unterdrückt alle Leerzeichen-Strippen, sofern sie nicht anderweitig angefordert werden, z. B. mit xsl strip-space. Display-Version und Timing-Informationen auf die Standard-Fehlerausgabe Die Ausgabe verfolgt auch die Dateien, die gelesen und geschrieben werden, und Erweiterungsmodule Die geladen werden. Display Stylesheet Tracing-Informationen Dies führt die Ausführung jeder Anweisung im Stylesheet, so dass die Ausgabe kann ziemlich umfangreich sein Auch schaltet die Zeilennummerierung für das Quelldokument Wenn ein Klassenname angegeben ist, ist es eine benutzerdefinierte Klasse, die muss Implementieren Wenn der Klassenname weggelassen wird, ist ein vom System bereitgestellter Trace-Listener Performance-Profiling, set classname to Dies erzeugt eine Ausgabedatei, die Timings für jede ausgeführte Anweisung gibt. Diese Ausgabedatei kann anschließend analysiert werden, um ein Ausführungszeitprofil für das Stylesheet zu geben. Siehe Performanceanalyse . Wird nur verwendet, wenn die Option - s ein Verzeichnis angibt. Steuert die Anzahl der Threads, die zur Verarbeitung verwendet werden Dateien im Verzeichnis Jede Transformation läuft in einem einzigen Thread. Schalten auf die Verfolgung der Bindung von Anrufen an externe Java-Methoden Dies ist nützlich bei der Analyse, warum Saxon eine Java-Methode nicht finden kann, um einen Erweiterungsfunktionsaufruf im Stylesheet anzupassen, oder warum es ist Wählt eine Methode über eine andere, wenn mehrere verfügbar sind. Dies ist gleichbedeutend mit Einstellung und - traceout Dateiname, dh es verursacht Trace-Profil-Informationen auf die angegebene Datei gesetzt Diese Ausgabedatei kann anschließend analysiert werden, um ein Ausführungszeit-Profil für das Stylesheet zu geben Siehe Performance Analysis. Indicates, dass die Ausgabe der Trace-Funktion auf eine bestimmte Datei gerichtet werden soll Alternativ, geben Sie an, um die Ausgabe zu irren, um es an den Standard zu senden, oder null, um es verworfen zu haben Diese Option wird ignoriert, wenn ein Trace-Listener Wird in diesem Fall verwendet, Trace-Ausgang geht an die registrierte Trace-Listener. Wählt die Umsetzung der internen Baum-Modell-tree winzig wählt das winzige Baum-Modell die Default - tree linked wählt das verknüpfte Baummodell aus - tree tinyc wählt das kondensierte winzige Baummodell aus Wählen Sie ein Baummodell aus. Zeigt an, dass die Namen des Quelldokuments und des Stylesheet-Dokuments URLs sind, ansonsten werden sie als Dateinamen genommen, es sei denn, sie beginnen mit oder Datei, in welchem ​​Fall sie als URLs angenommen werden. Erfordert Schema-basierte Validierung der Quelldatei und aller Dateien, die mit dem Dokument oder ähnlichen Funktionen gelesen werden Validierung ist nur bei Saxon-EE verfügbar, und diese Markierung schaltet automatisch die Option - sa ein Geben Sie - val oder - val streng an, um eine strenge Validierung anzufordern, oder - val lax für lax validation. Wenn versionmsg off angegeben ist, unterdrücken Versionswarnungen Dies unterdrückt die Warnmeldung, die normalerweise bei der Ausführung einer WSC-Spezifikation bei der Ausführung eines XSLT 2 0 ausgegeben wird Prozessor gegen ein Stylesheet, das die Version 1 0 spezifiziert. Indicates die Richtlinie für die Behandlung von wiederherstellbaren Fehlern im Stylesheet stille Mittel wiederherstellen, erholen bedeutet, nach dem Schreiben ein Warnmeldung an die Systemfehlerausgabe, tödliche Mittel signalisieren den Fehler und versuchen keine Wiederherstellung Hinweis, dies gilt derzeit nicht für alle Fehler, die die XSLT-Empfehlung als wiederherstellbar beschreibt. Die Voreinstellung ist wiederherstellen. Verwenden Sie den SAX-Parser für Quelldatei und alle Dateien Geladen mit der Dokumentenfunktion Der Parser muss der vollständig qualifizierte Klassenname einer Java-Klasse sein, die die oder die Schnittstelle implementiert. Die Verwendung dieser Option besteht darin, einen HTML-Parser wie John Cowan s TagSoup und nicht einen XML-Parser auszuwählen Die TagSoup-JAR-Datei muss sich auf dem Klassenpfad befinden, und der Klassenname, der verwendet werden soll, ist die gemeinsame Verwendung. Dieser Parser wird vom Apache Commons-Projekt bereitgestellt und es passt den Standard-Parser an, indem er einen EntityResolver verwendet, der externe Entitätsreferenzen auflistet Eine externe DTD in einer DOCTYPE-Deklaration unter Bezugnahme auf eine OASIS-Katalogdatei Diese können verwendet werden, um wiederholte Aufrufe von externen Webservern wie dem W3C-Server zu vermeiden Ly verwendet DTDs wie die XHTML DTD. Apply XInclude Verarbeitung auf alle eingegebenen XML-Dokumente einschließlich Schema und Stylesheet-Module sowie Quelldokumente Dies funktioniert derzeit nur, wenn Dokumente mit dem Xerces-Parser analysiert werden, was der Standard in JDK 1 5 und höher ist. If - xmlversion 1 1 ist spezifiziert, erlaubt XML 1 1 und XML Namespaces 1 1 Konstrukte Diese Option muss gesetzt werden, wenn Quelldokumente mit XML 1 1 gelesen werden sollen oder ob Ergebnisdokumente als XML serialisiert werden sollen 1 1 Diese Option Ermöglicht auch die Verwendung von XML 1 1-Konstrukten innerhalb des Stylesheets selbst. Lädt weitere Schemadokumente Die Deklarationen in diesen Schemadokumenten sind bei der Validierung von Quelldokumenten oder zur Verwendung durch den Validierungsausdruck verfügbar. Diese Option kann auch verwendet werden, um die Orte von Schemadokumenten zu liefern Werden in das Stylesheet importiert, in dem Fall, in dem die xsl-Import-Schema-Deklaration den Ziel-Namespace des Schemas gibt, aber nicht seinen location. If - xsdversion 1 1 ist angegeben, erlaubt XML Sc Hema 1 1 Konstrukte wie Assertionen Diese Option muss gesetzt werden, wenn Schemadokumente mit XML Schema 1 1 gelesen werden sollen. Wenn auf die Standardeinstellung gesetzt ist, versucht der Schema-Prozessor, alle Schriftsdokumente zu laden, die in xsi schemaLocation und xsi noNamespaceSchemaLocation Attribute in der Instanzdokument, sofern kein Schema für den angegebenen Namespace oder Nicht-Namespace bereits vorhanden ist Wenn diese Option deaktiviert ist, werden diese Attribute ignoriert. Specifiziert die Datei mit dem Hauptstylesheet-Modul Obligatorisch, es sei denn, die Option - a Option oder - c wird verwendet Der Wert - Identifiziert den Standard-Eingangsstrom Wenn die Option - u angegeben ist, muss der Wert ein URI statt eines Dateinamens sein. Bestimmt, ob ein XSLT 2 0 Prozessor oder XSLT 3 0 Prozessor verwendet werden soll Standardmäßig wird der Wert aus dem Versionsattribut übernommen Des xsl-Stylesheet-Elements. Benutzen Sie den SAX-Parser für die Stylesheet-Datei, einschließlich aller geladenen xsl include oder xsl import Der Parser muss der voll qualifizierte Klassenname eines Jav sein Eine Klasse, die das oder Interface implementiert. Stellen Sie eine Funktion, die in der Konfigurationsschnittstelle definiert ist. Die Namen der Features sind im Javadoc für die Klasse FeatureKeys definiert. Der hier verwendete Wert ist der Teil des Namens nach dem letzten, zB --allow-external - Funktionen aus Nur Features, die einen String oder Boolean akzeptieren, können für Booleans gesetzt werden die Werte true false, on off, ja nein und 1 0 sind erkannt. Display-Befehlssyntax. A param nimmt den Formularnamen Wert Name ist der Name des Parameters, Und Wert den Wert des Parameters Diese Parameter sind innerhalb des Stylesheets als normale Variablen unter Verwendung der Namens-Syntax zugänglich, sofern sie mit einem oberste xsl param-Element deklariert werden. Wenn es keine solche Deklaration gibt, wird der angegebene Parameterwert stillschweigend ignoriert If Das xsl param-Element hat ein Attribut, das den gewünschten Typ anzeigt, dann wird der auf der Befehlszeile gelieferte String-Wert zu diesem Typ gegossen, was zu einem Fehler führen kann, zum Beispiel wenn eine ganze Zahl erforderlich ist und die Supp Lied-Wert kann nicht in eine Ganzzahl umgewandelt werden Wenn der Parameter mit der Option statisch ja neu in XSLT 3 0 deklariert wird, wird der Wert als statischer Parameterwert ausgegeben. Ein Param, dem ein führendes Fragezeichen vorangestellt ist, wird beispielsweise als XPath-Ausdruck interpretiert Time current-dateTime setzt den Wert der Stylesheet-Parameterzeit auf den Wert des aktuellen Datums und der Uhrzeit als Instanz von xs dateTime, während debug false den Wert des Parameter-Debuges auf den booleschen Wert false setzt Wenn der Parameter einen gewünschten Typ hat Zum Beispiel xsl param name p als xs date, dann muss der gelieferte Wert mit diesem Typ nach den Standardregeln für die Umwandlung von Variablenwerten und Funktionsargumenten kompatibel sein Der statische Kontext für diesen XPath-Ausdruck enthält nur die Standard-Namespaces, die üblicherweise an die Präfixe xs gebunden sind Fn xsi und saxon Der statische Basis-URI, der beim Aufruf der doc-Funktion verwendet wird, ist das aktuelle Verzeichnis Der dynamische Kontext enthält kein Kontext, Position oder Größe, Und keine Variablen. Ein Param, dem ein führender Ausrufezeichen vorausgeht, wird als Ausgabeparameter interpretiert. Beispielsweise Einzug ja fordert eingerückte Ausgabe Dies entspricht der Angabe des Attributeinzugs ja auf einer xsl-Ausgabedeklaration im Stylesheet Ein in der Befehlszeile angegebener Ausgabeparameter Überschreibt eine im Stylesheet angegebene Für Parameter doctype-system doctype-public und saxon next-in-chain ein Null-längen-Wert wird als abwesend behandelt, das heißt, der Effekt ist, um jeden Wert, der innerhalb der Stylesheet gesetzt wurde, abzubrechen Verwenden Sie die Bash-Shell, müssen Sie entkommen, da. A param vorangestellt von einem führenden Pluszeichen wird als Dateiname oder Verzeichnis interpretiert Der Inhalt der Datei wird als XML geparkt und der daraus resultierende Dokumentknoten wird an das Stylesheet als das übergeben Wert des Parameters Ist der Parameterwert ein Verzeichnis, so werden alle sofort enthaltenen Dateien als XML analysiert und die resultierende Folge von Belegknoten als Wert des Parameters F übergeben Oder Beispiel, setzt den Wert der Stylesheet-Parameter-Suche auf den Dokumentenknoten an der Wurzel des Baumes, der den geparsten Inhalt der Datei repräsentiert. Unter den meisten Betriebssystemen ist es möglich, einen Wert zu liefern, der Leerzeichen enthält, indem er sie in doppelte Anführungszeichen umschließt Beispielname John Smith Dies ist ein Merkmal der Betriebssystem-Shell, nicht so was Saxon tut, also kann es nicht unter jedem Betriebssystem oder Befehlsprozessor funktionieren. Im jEdit-Konsolen-Plugin muss es zB als Name geschrieben werden John Smith. Wenn der Parametername in einem Nicht-Null-Namespace ist, kann dem Parameter ein Wert mit dem Syntax-localname-Wert gegeben werden. Hier ist uri der Namespace-URI des Parameters s name und localname ist der lokale Teil des Namens Gilt auch für Ausgabeparameter. Beispielsweise können Sie die Einrückungsstufe auf 4 setzen, indem Sie die Parameter-Einzugsräume verwenden 4 In diesem Fall werden jedoch auch lexikalische QNames mit dem Präfix saxon erkannt, zB saxon indent-spaces 4 Siehe Auch Zusätzliche Serialisierungsparameter. Wenn die Option - a verwendet wird, wird der Name des Stylesheets weggelassen. Das Quelldokument muss eine xml-Stylesheet-Verarbeitungsanweisung vor dem ersten Elementstart-Tag enthalten. Diese Verarbeitungsanweisung muss ein Pseudo-Attribut href haben, das die identifiziert Relative oder absolute URL des Stylesheet-Dokuments und ein Pseudo-Attributtyp, dessen Wert Text xml Anwendung xml oder Text xsl ist. Xml-stylesheet type text xsl. Es ist auch möglich, auf ein Stylesheet zu verweisen, das in das Quelldokument eingebettet ist, vorausgesetzt, es hat ein id-Attribut und das id-Attribut wird in der DTD als Typ-ID deklariert. Xml-Stylesheet Typ Text xsl href style1 DOCTYPE BOOKLIST SYSTEM ATTLIST xsl transform id ID IMPLIED BOOKLIST xsl transform id style1 version 1 0 xmlns xsl xsl transform BOOKLIST. Saxon Entwicklerhandbuch Nicht-JavaScript Version. Die Funktion transformToXML hat ein Problem mit dem Meta-Inhaltstyp Tag Es gibt es wie this. meta content text html charset UTF-8.which ist nicht korrekt X HT ML, weil es schließt mit statt mit. Ein Weg, um die Ausgabe korrekt zu erhalten ist anstelle von transformToXML ersten transformToDoc anf dann saveHTML verwenden . DomTranObj xslProcessor - transformToDoc domXmlObj domHtmlText domTranObj - saveHTML. Entitäten werden von der Ausgabe mit dem obigen Code weggelassen Das Symptom war, dass nbsp - was mit UTF-8-Codierung funktionieren sollte - nicht einmal zum XSLTProcessor gelangte, geschweige denn durch sie Viel hacking Ich entdeckte die einfache fix set substituteEntities to true in der DOMDocument für die XSL-Datei Das ist, ersetzen Sie das Laden des xsl-Dokuments mit. Php xsl neues DOMDocument xsl - substituteEntities true addierte Zeile xsl - load. However, dies schlägt fehl, wenn Dateneingaben HTML-Entity-Referenzen haben Einige Datenbankeinträge können sogar benutzergenerierten Text enthalten libxml hat die pedantische Angewohnheit, einen FATAL-Fehler für jede undefinierte Entität zu lösen Die entitäten so libxml doesn t sehen sie. PHP-Funktion hideEntities Daten Rückkehr strreplace Amp-Daten. Sie können einfach hinzufügen, um das Beispiel, aber es ist immer besser, eine Funktion zu definieren, um Daten in ein DOMDocument zu laden. Auf diese Weise brauchen Sie keine Entity-Deklarationen in entweder. Php Zusätzliche Funktion für Beispiel 1. Laden Sie eine XML-Datei und erstellen Sie ein DOMDocument Handles beliebige Entitäten, auch undefinierte Funktion fileToDOMDoc Dateiname dom neu DOMDocument xmldata filegetcontents Dateiname xmldata strreplace amp xmldata disguise s geht IN zu loadXML dom - substituteEntities true collapse s going OUT to TransformToXML dom - loadXML xmldata return dom. Vergleich mit Beispiel 1 Umwandlung in einen String. Laden Sie die XML-Quellen xml fileToDOMDoc xsl fileToDOMDoc. Konfigurieren Sie den Transformator proc new XSLTProcessor proc - importStyleSheet xsl. Verwandeln Sie XML nach dem Stylesheet xsl echo proc - transformToXML xml transformieren Sie die Daten. Ich bemerkte eine Inkompatibilität zwischen libxslt php4 und die Transformation durch XSLTProcessor Php5 und der XSLTProzessor scheinen implizite CDATA-Section-Elemente hinzufügen Wenn Sie einen xslt like. script Typ haben Text javascript foo xsl Wert-von select bar script. It wird in. Zumindest für Ausgabe-Methode xml, um strenge xhtml mit xslt1 zu produzieren. Dies bringt einen Fehler zumindest in Firefox 1 5, da es keine gültige Javascript Es sollte Schauen Sie wie das. Da die CDATA-Sektion implizit ist, war ich nicht in der Lage, die Ausgabe zu deaktivieren oder ein vorher zu setzen. Ich habe alles über xsl Text deaktiviert-Ausgang-Escaping ja. Ich habe auch versucht, implizite Hinzufügen von CDATA mit deaktivieren Ausgabe cdata-section-elements Ich dachte, das würde Skript-Tags ausschließen Es didn t. xsl Text deaktivieren-Ausgabe-Escaping ja ltscript Typ Text Javascript gt foo xsl Text xsl Wert-von select bar xsl Text deaktivieren-Ausgabe-Escaping ja lt Skript Gt xsl Text. Simple, aber es hat mich eine Weile gedauert. transformToXML, wenn man zuvor PHP-Funktionen registriert hat, versucht es tatsächlich, diese Funktionen auszuführen, wenn es sie in einer PHP-Funktion pseudo-XSL-Funktion findet. Es findet sogar statische Funktionen in Klassen, zum Beispiel. xsl value-of select php-Funktion MyClass MyFunction, string attr, string disable-output-escaping yes. However, in dieser Situation transformToXML versucht nicht, MyClass MyFunction auszuführen Stattdessen führt es myclass myfunction In PHP, da Klassen und Funktionen ich bin Denken Sie Groß-und Kleinschreibung, das verursacht keine Probleme. Ein Problem entsteht, wenn Sie diese Features mit der Autoload-Funktion kombinieren So, sagen, ich habe, die die MyFunction-Definition enthält Im Allgemeinen, wenn ich MyClass MyFunction anrufe, wird PHP MyClass übergeben, um zu autoload und autoload Wird sich öffnen. Was wir soeben gesehen haben, bedeutet aber, dass transformToXML myclass zu autoload, nicht MyClass, mit der Konsequenz, dass PHP wird versuchen, zu öffnen, was doesn t existiert, inst Ead von denen tut auf Groß-und Kleinschreibung Betriebssysteme, das ist nicht signifikant, aber auf meinem RedHat-Server ist es - PHP gibt eine Datei nicht gefunden Fehler. Die einzige Lösung, die ich gefunden habe, ist, die Autoload-Funktion zu bearbeiten, um zu suchen Klassennamen, die in meinen XSL-Dateien verwendet werden, und manuell sie in das richtige Gehäuse umwandeln. Eine andere Lösung ist offensichtlich, alle Kleinbuchstaben und Dateinamen zu verwenden. Es scheint, dass die Verwendung von Heinemann nicht korrekt ist und das beabsichtigte Ergebnis nicht erreicht. Diese Methode Zweck ist es, einen globalen xsl param Wert im XSL Stylesheet zu ändern - nicht um ein Attribut eines anderen Elements zu ändern xsl param Grundsätzlich können Sie ein Stylesheet einrichten, das von PHP extern angepasst werden kann, ohne sich zu manipulieren Die ursprüngliche XSL-Datei. Hier ist ein Beispiel für die Verwendung, die funktionieren wird. Xml version 1 0 xsl Stylesheet Version 1 0 xsl param name printsomething select defaultstring xsl template match mydoc p style farbe rot Gedruckter Parameter xsl value-of select printsomething p xsl Vorlage xsl Stylesheet. Php dom neu DOMDocument xsl neuer XSLTProzessor xsl - setParameter printsomething Jetzt habe ich den Standardstil überschrieben dompour dom - load style xsl - importStyleSheet dom dom - loadXML mydoc mydoc. Out xsl - transformToXML dom. vardump vor, htmlentities aus ENTQUOTES utf-8, xsl - getParameter printsomething, pre. String 143 xml Version 1 0 p Stil Farbe rot Printed Parameter Jetzt habe ich die Standard-p String 32 überschrieben Jetzt habe ich die Standard-String 6.Notice, dass derzeit das Hinzufügen eines Namespace wird nicht funktionieren Die einzige Option derzeit ist, um die erste gesetzt Parameter für Namespace zu einem leeren String, obwohl du das Präfix mit Colon dem zweiten Argument für den Namen hinzufügen kannst, um den Parameter für einen Namespace-Prefix Parametername zu setzen. Beispiel für wie es funktioniert. Xml Version 1 0 Kodierung utf-8 xsl Stylesheet Version 1 0 xsl Ausgabemethode xml indent ja kodierung ISO-8859-15 doctype-system - W3C DTD XHTML 1 0 Transitional DE doctype-public xsl template match docs html head title xsl text Beispiel xsl Text Titel Kopf Körper xsl für-jeder Auswahl Block div xsl Wert-von select div xsl für-jeder Körper html xsl Vorlage xsl Stylesheet. Php dom new DomDocument 1 0 utf-8 xsl neuer XSLTProzessor xsl - setParameter block xmlns. Style realpath dom - load style xsl - importStyleSheet dom. Dom - loadXML docs blockieren Howto set xhtml Transitional Namespaces width php Block Block siehe Block docs. Out xsl - getParameter docs xmlns, pre. XSLTProcessor removeParameter gewonnen t Arbeit an Parametern, die über den XSLTProcessor gesetzt werden setParameter string namespace, array options in 5 1 - Sie müssen einzeln gesetzt und entfernt werden. Setzen und Verwenden von Variablen und Parametern. Februar 7, 2001. Variable in XSLT hat mehr gemeinsam mit einer Variablen in Algebra als mit einer Variablen in einer typischen Programmiersprache Es ist ein Name, der repräsentiert a value and, within a particular application of a template, it will never represent any other value -- it can t be reset using anything described in the XSLT Recommendation Some XSLT processors offer a special extension function to allow the resetting of variables. XSLT variables actually have a lot more in common with constants in many programming languages and are used for a similar purpose If you use the same value multiple times in your stylesheet, and there sa po ssibility that you ll have to change them all to a different value, it s better to assign that value to a variable and use references to the variable instead Then, if you need to change the value when re-using the stylesheet, you only change the value assigned in the creation of that variable. For example, imagine that we want to turn this XML. The following templates would accomplish this all file names refer to files in this zip file. but if you want to change the three font elements size attribute to 12pt , it would be too easy to miss one -- especially if the template rules weren t next to each other in the stylesheet The solution is to use a variable to represent this size value. When referencing a variable or parameter from a literal result element s attribute, you want the XSLT processor to plug in the variable s value You don t want a dollar sign followed by the variable s name at that point in the template To do this, put the variable inside curly braces to make it an attribute va lue template To plug a variable s value into the content of a result tree element, instead of an attribute value, use an xsl value-of instruction. In the example above, if the bodyTextSize variables were not enclosed by curly braces, each font start-tag in the result would have looked like this font size bodyTextSize. The xsl variable instruction creates a variable Its name attribute identifies the variable s name, and the value can be specified either as the xsl variable element s contents like the 10pt in the example or as the value of an optional select attribute in the xsl variable element s start-tag. The value of the select attribute must be an expression This offers two nice advantages. It shows that the xsl variable element isn t quite as limited as the constants used by popular programming languages because the variable s value doesn t need to be hardcoded when the stylesheet is written. The attribute value doesn t need curly braces to tell the XSLT processor this is an attribute v alue template, evaluate it as an expression, because it always evaluates an xsl variable element s select attribute value as an expression. The two xsl variable elements below have the same effect as the one in the example above they set the bodyTextSize variable to a value of 10pt The bodyTextSize variable has its value assigned in a select attribute instead of in its element content the value assigned will be the return value of a concat function that concatenates the string pt to the result of adding baseFontSize 2 What s baseFontSize It s another variable, which is defined above the bodyTextSize variable s xsl variable element That value of 8 is added to 2 and concatenated to pt to create a value of 10pt for the bodyTextSize variable, which can then be used just like the bodyTextSize variable in the previous example. The example above demonstrates some of the options available when using an expression in the select attribute to assign a variable s value The second xsl variable elemen t references another variable, does some math, and makes a function call Variables aren t as limited as many XSLT newcomers might think. It also demonstrates another nice feature of variables they don t have to be strings Once baseFontSize is set to 8 , the select value of the bodyTextSize variable s xsl variable element adds 2 to it and comes up with 10 If the XSLT processor had treated these number as strings, putting 8 and 2 together would get us 82 Instead, the XSLT processor treats the baseFontSize variable as a number It can treat a variable as any type of object that can be returned by an XSLT expression a string, a number, a boolean value, or a node set If an XSLT variable has a value assigned by an xsl variable element s contents and by a select attribute, the XSLT processor uses the one in the select attribute. The examples above show top-level variables They re defined with xsl variable elements that are children of the main xsl stylesheet element, making them global variables that can be referenced anywhere in the stylesheet. Variables can be local as well -- that is, defined inside of a template rule and only available for use within that template rule For example, the following templates have the same result as the ones in the examples above except that the font start-tag before the result winery element s content has a value of 12pt in its size attribute instead of 10pt. The way these templates assign these size values is different Instead of one global bodyTextSize variable to use throughout the stylesheet, the two template rules each have their own bodyTextSize variables declared between their xsl template tags The first one sets bodyTextSize to a value of 10pt , and that s what gets plugged into the size attribute values for the font tags that start the product year and price elements The second template sets bodyTextSize to 12pt , so the winery and grape element contents copied to the result tree by that template start with font tags that have a size value of 12pt. That s just a toy example The next stylesheet uses a selection of the string manipulation functions available in XSLT to right align the result tree versions of the color elements in this document. The fieldWidth global variable stores the desired column width the goal is to add spaces before each color value so that the spaces plus the color name add up to this value. The color element s template rule has two local variables. The value-length variable stores the length of the color name using the string-length function. The padding variable stores the number of spaces required to right-align the color name It does this by subtracting the value of the local valueLength variable from the global fieldWidth variable. Once the template rule knows how much space it needs to add to the result tree before adding the color element s contents, it adds that many spaces by using the substring function to pull that many spaces out of a string of spaces passed to the substring function as its first argument. In the result, red has nine spaces before it, blue has eight, and yellow has six. I could have done this without any local variables in fact, when I originally wrote this stylesheet, I did without them As with any programming language, using local variables made it easier to break down the problem into pieces and to make the relationship of those pieces easier to understand. The xsl param instruction is just like xsl variable with one important difference its value is only treated as a default value and can be overridden at runtime All the stylesheet examples up to this point would work the same way if you substituted xsl param elements for their xsl variable elements, but you would have the option of overriding the values when calling their templates. For example, let s take one of the earlier examples and make the substitution Here is how it looks as a complete stylesheet. If we run it as shown with the same source document, it produces the same result as the previous section s version that used xsl variable instead of xsl param. However, if we pass the stylesheet a value of 8pt to use for bodyTextSize it substitutes this new value for all uses of this parameter. Of course, I m skimming over one important detail here how do you pass the alternative value for the parameter to the stylesheet The XSLT Recommendation doesn t tell us In fact, it deliberately tells us that it s not going to tell us Just as the W3C s XSL Working Group wanted to leave the potential methods for giving input to and getting output from an XSLT processor as open as possible, they also didn t want to limit how the processors will be told a new value for a global parameter setting As we ll see, not all parameters are global like the bodyTextSize one above they can also be local to template rules So, it s up the particular XSLT processor s designer To pass the new value of 8pt to the stylesheet when using the Saxon XSLT processor, the command line might look like this. It s actually one command split over three lines to fit on the page here When really using Saxon or any other Java-based XSLT processor, it makes your life easier to store everything before the in that command line in a Windows batch file, a UNIX shell script, or your operating system s equivalent Then you can pass it the important parameters each time you run it with no need to type the full Java library names for the XSLT processor and XML parser. The only difference between applying the stylesheet to the document this way and running it with the bodyTextSize default value is the addition of the bodyTextSize 8pt part at the end Other XSLT processors may require a different syntax when passing a new parameter value along from the command line, but they would still create the same result when using this stylesheet and input. Local parameters are even more useful in template rules than XSLT local variables are, because the flexibility of passing one or more values to a template lets that template adapt to different situations Named templates that don t take advantage of this can still operate as functions or subroutines, but when you use named templates that do, you can start treating XSLT like a real programming language For example, the ability of named templates to call themselves with parameters makes recursion and all the power associated with it possible. How we pass a new value to a template rule s local parameter isn t quite the open question that it is with global parameters because XSLT provides the xsl with-param instruction for just this purpose You can use this element in an xsl apply-templates element to assign a new value to a parameter in a template being applied, but it s more commonly used when calling a named template with the xsl call-template instruction For example, the first template rule in the following stylesheet has a name attribute and not a match attribute Instead of the XSLT processor looking for nodes where it can apply this template, the processor will wait until the template is explicitly called with an xsl call-template instruction. The second and third template rules, which have match patterns of chapter title and section title , call the first template by its name of titles using xsl call-templates elements These xsl call-templates elements don t need any children, but they have them here xsl with-param elements to pass parameter values to the named templates The titles template rule will use these values to override the default value of h4 when it s called The with-param instruction in the chapter title template rule is saying pass along the value h1 for the headerElement parameter , and the one in the section title template rule is passing the value h2 For this input document. the titles template is called when the XSLT processor finds each of the two title element nodes The titles named template uses the passed values to create the h1 and h2 elements in the result. Just as an xsl param element can specify its defau lt value as either content between its start - and end-tags or as the value of a select attribute, the xsl with-param element can indicate the value to pass using either method The two xsl with-param elements in the example above use the two different methods to demonstrate this. The XSLT processor evaluates the xsl with-param element s select value as an expression just like it does with the xsl param element s select attribute value This is why the third template above needs single quotation marks around the value of h2 even though it s also enclosed by double quotation marks The double quotation marks serve a different purpose to tell the XML parser where the select attribute value starts and ends The inner single quotation marks tell the XSLT processor that the value is a literal string and not an expression to evaluate. Note The name value specified in the xsl call-template element cannot contain a variable reference For example, if you declared a variable called templateName and sto red the string title there, an xsl call-template start-tag of xsl call-template name templateName would not work in the previous example s chapter title or section title template rules. You don t have to specify a hardcoded string like h1 or h2 as the value of the parameter to pass in an xsl with-param element You can put the result of one or more functions in there, or even an XPath expression that retrieves a value from somewhere in the document or even from another document, using the document function This ability opens up an even broader range of possibilities for how you use parameter passing in XSLT.

No comments:

Post a Comment