OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   extrernal entities - part 2

[ Lists Home | Date Index | Thread Index ]
  • To: xml-dev@lists.xml.org
  • Subject: extrernal entities - part 2
  • From: Rick Marshall <rjm@zenucom.com>
  • Date: Thu, 10 Feb 2005 13:24:47 +1100
  • Organization: Zenucom Pty Ltd
  • User-agent: Mozilla Thunderbird 0.6 (X11/20040502)

<?xml version="1.0"?>

<!DOCTYPE label [
        <!ELEMENT vpn EMPTY>
        <!ATTLIST vpn code ENTITY #REQUIRED>
        <!NOTATION VPN SYSTEM "/usr/local/app/shoeman/bin/vpn">
        <!ENTITY codex SYSTEM "1234" NDATA VPN>
        ]>

<label_file><vpn code="codex" /></label_file>

ok, a bit more background here. i am trying to overcome a somewhat 
classic "late-binding" problem.

we get requests to print labels. the request come as text files that are 
converted to xml and stored. the text file has everything we need to 
print the labels except for some local info (essentially our product 
number). sometime between receiving the files and actually printing the 
labels all the data bits are filled in and we do have the required 
product number. this can be identified from a code supplied by the customer.

the code above is a simplified version just to illustrate the point.

when we produce the final output (zebra printer codes in this case) we 
need to include our product code. so what i want to do is embed in the 
xml a call to a function in our system that, when passed the customer 
code, will return our product code.

everything i've read suggests that the above snippet should work 
(assuming /usr/local/app/sheoman/bin/vpn is executable and returns 
something).

and here is the simplified stylesheet:<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

        <xsl:output method="text"/>

        <xsl:template match="/">
                <xsl:apply-templates match="label_file"/>
                </xsl:template>

        <xsl:template match="label_file">
                <xsl:text>
XX</xsl:text>
                <xsl:apply-templates match="vpn"/>
                </xsl:template>

        <xsl:template match="vpn">
                <xsl:text>
YY </xsl:text>
                <xsl:value-of select="@code"/>
                <xsl:text> ZZ</xsl:text>
                </xsl:template>

        </xsl:stylesheet>

and the output:

XX
YY codex ZZ

as you can see the entity "codex" is not  being replaced by the call to 
/usr/local/...

i can devise alternatives, but they would not be xml solutions and that 
has other problems downstream.

ps if this is the correc tsolution then it is a good reason to hang on 
to dtds.

rick
begin:vcard
fn:Rick  Marshall
n:Marshall;Rick 
email;internet:rjm@zenucom.com
tel;cell:+61 411 287 530
x-mozilla-html:TRUE
version:2.1
end:vcard





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS