[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Understanding XML catalogs: what they are, why theyare us
On 21/07/2010 21:28, Costello, Roger L. wrote: > Hi Folks, > > I am just learning to use XML catalogs. Below is what I've learned. Are there any errors in the below description? /Roger > I can't see how any oof your examples can work, did any of them work, if so which parser were you using? > > ---------------------------------------------------------------- > HOW ARE CATALOGS USED? > ---------------------------------------------------------------- > Create an external entity and then use that entity rather than hardcoding the URL: > > <?xml version="1.0" encoding="UTF-8"?> > <!DOCTYPE bookstore [ > <!ENTITY xslt-file SYSTEM "http://www.xfront.com/catalog-test/bookstore.xsl"> > ]> > <?xml-stylesheet type="text/xsl" href="&xslt-file;"?> > <bookstore> > ... > </bookstore> & does not indicate an entity reference within the content of a PI, which is parsed in the same way as a comment, so that is refering to the URI with the literal string &xslt-file;" > > Notice that I created an external entity, xslt-file, and associated it with the URL, http://www.xfront.com/catalog-test/bookstore.xsl > > <!ENTITY xslt-file SYSTEM "http://www.xfront.com/catalog-test/bookstore.xsl"> > > Then, in the XSLT processing instruction I used the entity: > > href="&xslt-file;" > It's not possible to use enity or character references within a processing instruction. > > ---------------------------------------------------------------- > WHERE ARE CATALOGS USED? > ---------------------------------------------------------------- > Wherever links are used, you can use catalogs. Above we saw that catalogs can be used with stylesheet PIs. > > Within an XSLT document you may have<include> and<import> elements. They use links. You can use catalogs with them: > > <?xml version="1.0"?> > <!DOCTYPE bookstore [ > <!ENTITY include-file SYSTEM "http://www.xfront.com/catalog-test/toUpperCase.xsl"> > <!ENTITY import-file SYSTEM "http://www.xfront.com/catalog-test/toLowerCase.xsl"> > ]> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0"> > > <xsl:include href="&include-file;"/> > <xsl:import href="&import-file;"/>"/> > If you define an entity reference to an external parsed entity then then the replacement text of the entity is the content of the file not the URL of the file so the xsl stylesheet referenced here is the one obtained by taking the content of the file toLowerCase.xsl interpreted as a URL. i> ... > </xsl:stylsheet> > > Notice that in the<include> and<import> elements I used entity references, rather than hardcoding a URL. Now I can use a catalog to map the URL to a local copy of the XSLT documents, if I desire. > > There are other places within an XSLT document where catalogs can be used, such as with the document() and doc() functions: > > <?xml version="1.0"?> > <!DOCTYPE bookstore [ > <!ENTITY doc-file SYSTEM "http://www.xfront.com/catalog-test/FitnessCenter2.xml"> > ]> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="2.0"> > ... > <xsl:variable name="FitnessCenter" select="doc('&doc-file;')" /> As above the xml parser will replace &doc-file; by the contents of FitnessCenter2.xml and then these contents will be interpreted as an xpath string specifying the url of the document to be loaded. > ... > </xsl:stylsheet> > > Notice that in the doc() function I used an entity reference, rather than hardcoding a URL. David
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] |
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|