Frage

Ich habe ein XML-Dokument. Ich unterzeichne einen Teil des Dokuments mit XMLSignature.Bevor ich Digest findet, möchte ich XSLT-Transformation anwenden.

Nach dem, was ich gelesen habe, wandelt XSLT ein XML-Dokument in ein anderes Format (kann auch XML sein). Jetzt bin ich verwirrt, dass ich wohin das transformierte neue Dokument sein wird, ist avilabel?

Wie kann ich den Wert aus diesem neu erstellten Dokument abrufen, wenn ich willum es dem Benutzer zu zeigen?

mein XML-Dokument
generasacodicetagpre.

Code für die Transformation
generasacodicetagpre.

Gemäß der XPath-Transformation sollte der Wert des Benutzerelements die XMLSignature nicht validiert werden.Wenn sich der Wert des Personenteements ändert, sollte die Unterschrift validiert werden.Wenn ich jedoch den Wert des Personenteils ändere, wird die Signatur nicht validiert.Warum?

War es hilfreich?

Lösung

Die beim Signieren eines Dokuments verwendete XSLT-Transformation betrifft, wie Knoten in Ihrer Quelle XML ausgewählt sind, wenn die Signatur berechnet wird.

Diese Frage / Antwort von Dave bezieht sich auf die Unterzeichnung von Teilen eines XML-Dokuments mit XPath2. Die Link Nach SEAN MULLANS 'POST In dieser Antwort sgibt sich, dass XPath2 eher für die Unterzeichnung von Teilen eines Dokuments geeignet ist, da die Auswertung eines XPath-Ausdrucks pro Knoten erfolgt.

so basierend auf dem Sun dsiig Beispiel Sie können die referenz erstellung durch: ersetzen generasacodicetagpre.

Dies ermöglicht, dass // r1 / user mit einer Signatur geschützt werden, während der Rest des Dokuments geändert werden kann.

Das Problem mit der Auswahl der XPath / XPath2 ist, dass eine Signatur für / einiger / knoten erzeugt werden kann / das / nicht / nicht / nicht / existiert . Sie haben Recht, ein Testdokument zu ändern, und stellen Sie sicher, dass die Signatur so arbeitet, wie Sie erwarten.

Sie können das Dokument in einem Testprogramm testen, indem Sie eine Signatur erstellen, dann mit dem XML-Knoten die Manipulation mit dem XML-Knoten vor der Überprüfung: generasacodicetagpre.


Eine zuverlässigere Alternative zu einem XPath-Wahlschalter ist möglicherweise darin, eine ID auf die XML-Dokumentelemente einzugeben, die Sie ansehen möchten, um sich anzumelden:

generasacodicetagpre.

Verweisen Sie dann diese ID als URI im ersten Parameter einer umhüllten Übertragung: generasacodicetagpre.


Für den Ausgang fügt ein Signaturvorgang dem DOM ein neues Signaturelement hinzu, das Sie im Speicher geladen haben. Sie können den Ausgang streamen, indem Sie es so umwandeln:

generasacodicetagpre.

Andere Tipps

Die XSLT-Spezifikation definiert nicht, was mit dem Ergebnisdokument passiert.Das ist durch die API-Spezifikationen Ihres ausgewählten XSLT-Prozessors definiert.Wenn Sie beispielsweise mit der JAXP-Schnittstelle XSLT von Java von Java aufrufen, können Sie das Ergebnis als DOM-Tree im Speicher bitten oder darauf, dass sie auf einer angegebenen Datei auf der Festplatte serialisiert werden soll.

Sie haben Ihre Frage mit Ihrer Frage mit "Java" getaggt.Meine Vermutung ist, dass Sie in ein DOM umwandeln möchten, und verwenden Sie dom-Schnittstellen, um den Wert aus dem neuen Dokument zu erhalten.Wenn Sie XSLT 2.0 und Saxon verwenden, ist die S9API-Schnittstelle wesentlich nutzbarer als die native JAXP-Schnittstelle.

Der XSLT-Teil definiert nur die Transformationsdefinition, nichts anderes. Schauen Sie sich das an:

Java XSLT Tutorial

In Francois-Kies Beantworten Sie die Datei input.xml Die Datei ist die Datei, die sich umgewandelt, die XSLT-Definition ist die XSLT-Definition, die beschreibt, wie die XML-Datei umgewandelt wird.Output.out sind die Ergebnisse, dies kann XML sein, kann aber auch HTML, Flat-Datei ... sein.

Hier hat ich angefangen, als ich XSLT verwendet habe:

http://www.w3schools.com/xsl/default.asp

Schauen Sie sich das auch an:

http://www.w3schools.com/xsl/tryxslt.asp? XMLFILE= CDCATALOG & AMP; XSLTFile= CDCATALOG

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