I need to know if a XML file does have the href attribute from < ?xml-stylesheet type="text/xsl" href="recibo.xsl"? > to determine what kind of Invoice it is (in my XSLT file). I´ve spend quite the time searching but couldn´t find any information on it. Is it even possible to read/acces those attributes in a XSLT?
CodePudding user response:
Reading the processing instruction is easy enough: string(/processing-instruction('xml-stylesheet'))
. But that won't parse out the "pseudo-attributes" (type
and href
) in its value. You have to do that yourself, unless your processor provides a vendor extension such as saxon:get-pseudo-attribute
.
CodePudding user response:
In XSLT 3 you could try e.g.
<xsl:variable name="stylesheet-href" as="xs:string?" select="parse-xml-fragment('<pi ' || /processing-instruction('xml-stylesheet') || '/>')/pi/@href"/>
to read out the xml-stylesheet
processing instruction node and parse its target into attributes from which you extract the href
pseudo attribute value.
Note that document-uri(document(''))
might also give you the stylesheet URI of the XSLT run.