Ich habe eine XSLT-Vorlage, die QNames, ähnlich wie dies erfordert sind Datenweitergabe in Top-Level-Parameter, deren Namen durch einEinstellung QName Parameter in xsltproc
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:eg="http://example.com/" version="1.0">
<xsl:param name="eg:foo"/>
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="$eg:foo"/>
</xsl:template>
</xsl:stylesheet>
Ich kann nicht umbenannt werden die Parameter wie ihre definiert externen Standard, und ich muss in der Lage sein, mit Vorlagen von Drittanbietern zu arbeiten, die diesem Standard entsprechen. Ich würde bevorzugen, xsltproc
zu verwenden, um Schablone zu verarbeiten, da ich es bereits im Projekt verwende und ich kenne seine Eigenheiten. Aber ich kann nicht herausfinden, wie man einen QName Parameter von der Befehlszeile einstellt. Was ich wirklich will, ist so etwas wie
xsltproc --xmlns eg http://example.com/ --stringparam eg:foo Something \
template.xsl input.xml
..., die den Wert der zB Echo zurück sollte: foo Parameter. (Der Inhalt von input.xml ist irrelevant, solange er wohlgeformt ist.) Aber ich kann nichts finden wie meine hypothetische Befehlszeilenoption --xmlns
. Kann jemand vorschlagen, wie ich dies tun könnte, ohne das spezielle Präfix hart zu kodieren, das in template.xsl
verwendet wurde?
Kannst du nicht einfach 'verwenden --stringparam zB: foo‚Foo bar''? Scheitert das? Ich habe versucht xsltproc in einer Windows-Eingabeaufforderung mit verschiedenen Kombinationen wie '--stringparam" zB: foo "bar',' --stringparam zB: foo bar' und '--stringparam zB: foo" foo bar "' und alles hat gut funktioniert . Zugegeben, das Anführungszeichen könnte von der Kommandozeilen-Shell abhängen, aber ich denke nicht, dass Sie eine Namensraumbindung einrichten müssen. –
Ja, du hast recht, ich kann. Aber woher weiß ich, welches Präfix verwendet werden soll? Die Auswahl eines Präfixes ist ein Implementierungsdetail der Vorlage, nicht Teil ihrer Schnittstelle. –
Sie können also nicht die Namespace-Deklarationen im XSLT-Stylesheet betrachten? –