Ich habe eine XML-Datei, die eine zugehörige XSL-Datei verweist, wie folgt aus:Wie ruft man XML <? Xml-stylesheet ...?> Anweisungen in Java auf?
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="my-transform.xsl"?>
<my-root> .....
und ich möchte es lesen in als org.w3c.dom.Document
, die Anwendung der Transformation.
Ich überlege mir, es einzulesen, die Stylesheet-Verarbeitungsanweisung mit XPATH /processing-instruction('xml-stylesheet')
extrahieren und dann die XSL-Datei von Hand laden und mit einer Transformer
anwenden.
Aber es scheint seltsam, dass ich das manuell tun muss - gibt es eine nette Möglichkeit, die Datei zu lesen und die eingebettete Transformation automatisch anzuwenden?
UPDATE: Dank @ Raphaëλ für die Beobachtung, dass TransformerFactory.getAssociatedStylesheet(...)
den Xml-Stylesheet-Wert als Source
identifizieren wird, die ziemlich nah ist. Gibt es etwas automatischeres als das?
Ist es notwendig, XSL in XML einzubetten, oder ist ein anderer Ansatz in Ordnung? – nawazlj
können Sie 'getAssociatedStylesheet' verwenden (https://docs.oracle.com/javase/8/docs/api/javax/xml/transform/TransformerFactory.html#getAssociatedStylesheet-javax.xml.transform.Source-java.lang. String-java.lang.String-java.lang.String-), um die 'Quelle' zu erhalten –
@nawazlj Idealerweise sollte das XML das Stylesheet angeben, weil das XML tatsächlich von meinen nachgeschalteten Client-Benutzern geschrieben wird. Ich verkaufe ihnen die Idee, ihre XML-Datei anzupassen, indem sie sie XSLT-Dateien geben, damit sie ihre eigenen shorthands entwickeln und zusammen mit XML an mich senden können. In der Tat haben sie bereits ihre Kurzschrift entwickelt, aber es ist in ihrem Build-Prozess und ich versuche, es als Teil meiner Dienstleistung für sie einzubringen. Also muss _their_ XML angeben, welche ihrer Stylesheets _I_ anzuwenden sind, wenn dies sinnvoll ist. – SusanW