Subject: RE: Retrieve External String XML Data as Object
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 27 Jun 2005 22:41:00 +0100
|
You write a URIResolver (under Java JAXP) or XmlResolver (under .NET) that
intercepts the URI and returns an object that the XSLT processor can handle,
for example (under JAXP) a StreamSource wrapping a StringReader that holds
the lexical XML.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: John [mailto:john-xsl-list@xxxxxxxx]
> Sent: 27 June 2005 21:09
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Retrieve External String XML Data as Object
>
> I have a data source that is only available through APIs, not through
> URLs or files. I can represent this external data as XML,
> but how can I
> make this data available to my XSL? The document() function seems to
> require the first parameter be an URL, and the node-set
> extensions don't
> seem to handle strings (at least not the Microsoft node-set
> extensions).
>
> Where custom:GetData() basically returns some XML:
>
> return( "<root><node>some text</node></root>" );
>
> I have tried:
>
> <xsl:variable name="extdata" select="msxsl:node-set(
> custom:GetData())" />
> <xsl:value-of select="$extdata/root/node/text()" />
>
> which gives 'cannot convert the operand to result tree fragment'.
>
> I have also tried:
>
> <xsl:variable name="extdata" select="document( custom:GetData())" />
> <xsl:value-of select="$extdata/root/node/text()" />
>
> Which gives no output. Do I have to make the data URL-accessible, or
> how can I get this XML into my XSLT as an object instead of a string?
> Should I convert the string to some other type of object before
> returning it to the XSL? Of course I would prefer to avoid
> extensions
> if possible. Hopefully there is something like document()
> that works on
> strings instead of URLs?
|