This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: How to use an XML-based LUT with XSLT?
- To: "'xsl-list at lists dot mulberrytech dot com'" <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] How to use an XML-based LUT with XSLT?
- From: Taras Tielkes <taras at info dot nl>
- Date: Thu, 27 Sep 2001 17:19:20 +0200
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Xavier,
As far as I understand, your XML source, and the XML containing the mapping
table are separate files.
XSLT has a function to access external XML documents, it's called
"document()".
You could adapt your value-of element to something like:
<xsl:value-of
select="document('errors.xml')/Table/Message[@Code=ActualErrorCode]"/>
Even better would be to cache the errors in hashmap using keys.(Note that
the XSL processor is not required to use a hashmap, although it's likely)
<xsl:key name="translate-error"
match="document('errors.xml')/Table/Message"
use="@code"/>
Now you can use something like:
<xsl:value-of select="key('errors', ActualErrorCode)"/>
Regards,
// tt
> -----Original Message-----
> From: Xavier Defrang [mailto:xavier@perceval.net]
> Sent: Thursday, September 27, 2001 4:50 PM
> To: Mulburrytech's XSL Mailing List
> Subject: [xsl] How to use an XML-based LUT with XSLT?
>
>
>
> Hello folks,
>
> I've written a XSL document to transform XML into XHTML (yes,
> that's a big
> surprize!). The document contains some error codes and I'd like to
> transform these numerical codes into an actual human-readable
> message so I
> built a small XML document as follow :
>
> <?xml version="1.0" standalone="yes"?>
> <Table>
> <Message Code="...">User-friendly error message</Message>
> ...
> </Table>
>
> Now I'd like to change my XSLT so I could look-up into the Table to
> substitute numerical error codes by text messages with
> something like :
>
> <xsl:value-of select="/Table/Message[@Code=ActualErrorCode]"/>
>
> Now the question is how do I "link" this table to my input
> DOM so I can
> reach the Message elements from within my XSLT? Is there any
> possibility
> to that with plain XSLT? (I don't want to use any engine-dependant
> extensions)
>
> Maybe should I make a <xsl:choose>-based template matching
> the elements
> containing these codes?
>
> Thanks in advance,
>
> Xavier Defrang
> Perceval R&D Team
> xavier@perceval.net
>
> -------------------------------------------------
> Perceval Technologies SA/NV Tel: +32-2-6409194
> Rue Tenbosch, 9 Fax: +32-2-6403154
> B-1000 Brussels http://www.perceval.net
> BELGIUM info@perceval.net
> -------------------------------------------------
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list