[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Is there a way to assign a base URI to a document?
Subject: [xsl] Is there a way to assign a base URI to a document? From: "Costello, Roger L." <costello@xxxxxxxxx> Date: Thu, 25 Aug 2011 14:26:33 -0400 |
Hi Folks, Is there a way to assign a base URI to a document? Allow me to explain. Here is an XML document. Notice the relative reference in the location element: <test> <location href="stuff/other.xml" /> </test> If my XSLT code inputs that XML document, it can get the document at that relative reference: <xsl:template match="test"> <xsl:sequence select="document(string(location/@href), .)" /> </xsl:template> Good. Now, suppose that instead of doing that, my XSLT code calls a function and passes it the XML document: <xsl:template match="test"> <xsl:variable name="result" select="f:identity(.)" /> </xsl:template> The function creates a variable, inside the variable it outputs the XML document, and then it outputs the value of the variable: <xsl:function name="f:identity" as="element()"> <xsl:param name="doc" as="element()" /> <xsl:variable name="result"> <xsl:sequence select="$doc" /> </xsl:variable> <xsl:sequence select="$result/*" /> </xsl:function> Oh, that function is in a separate XSLT file and is in its own folder. Here's how it is included: <xsl:include href="folder/identity.xsl" /> The document returned by the function is identical to the input XML document. So, my code now attempts to access the document at location/@href: <xsl:template match="test"> <xsl:variable name="new-xml" select="f:identity(.)" /> <xsl:sequence select="document(string($new-xml//location/@href), $new-xml/*)" /> </xsl:template> Unfortunately, FILE NOT FOUND is the result. The reason? The base URI of new-xml is different than the base URI of the original XML document. Thus, location/@href is attempting to reference stuff/other.xml relative to the new-xml's base URI. And that's wrong. For reasons I will not explain, I cannot simply use the XML document as the second argument to the document function: document(string($new-xml//location/@href), .) I would really like to assign to $new-xml a base URI. Is there a way to do that? If not, what's the best way to deal with this situation? /Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] anyURI problem, Imsieke, Gerrit, le- | Thread | Re: [xsl] Is there a way to assign , Andrew Welch |
Re: [xsl] strange error message par, Matthieu Ricaud-Duss | Date | Re: [xsl] Is there a way to assign , Andrew Welch |
Month |