Subject: RE: Colon Error in Processing-Instruction Name
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Thu, 19 Aug 2004 08:21:48 +0100
|
XSLT requires that the name in <xsl:processing-instruction> should be an
NCName (no-colon-name) in order to make it valid in namespace-aware-XML.
So there is no way of generating the HTML you want to generate. You could
use d-o-e as David Carlisle suggests, or do some post-processing with a text
editor.
Michael Kay
> -----Original Message-----
> From: Trevor Majic [mailto:majic87@xxxxxxxxxxx]
> Sent: 18 August 2004 16:16
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Colon Error in Processing-Instruction Name
>
> I have a processing-instruction that works in HTML, but when
> I include it in
> my XSL, I receive an error stating the name cannot include
> colons (namespace
> conflict).
>
> This is the processing-instruction as it appears in the HTML file:
>
> <?IS10744:arch name="linkone-enabled"
> public-id="-//LinkOne//NOTATION AFDR ARCBASE Linkone enabled//EN"
> auto=nArcAuto?>
>
>
> Obviously, when I try to add this as a processing-instruction
> in XSL, I
> receive an error message. This is the XSL processing
> instruction I used:
>
> <xsl:processing-instruction name="IS10744:arch">
> name="linkone-enabled"
> public-id="-//LinkOne//NOTATION AFDR ARCBASE Linkone
> enabled//EN"
> auto=nArcAuto
> </xsl:processing-instruction>
>
>
> Since the name can't include a colon (IS10744:arch), an error
> is generated.
>
> I have found two suggested work-arounds:
>
> 1. Replace the colon with a space or a dash. This
> however does not
> work. If I replace the colon in the HTML file, the page does
> not display
> correctly (it is missing the Linkone selection box).
>
> 2. Turn off namespace. I suspect there are some issues
> with doing
> that. First off, I don't know how to do it. Also, If I turn off the
> namespace, will that turn off the namespace validation for the whole
> document, or just for the data within the section where it is
> turned-off.
>
> NOTE: I may be incorrect in some of this, so feel free to
> correct me if I am
> wrong, or using wrong terminology.
>
> I can't add the colon after the processing name (ie.
> .....name=IS10744>:arch
> ..... as the output will be <?IS10744 :arch.....
>
> An error message is generated if I use an empty name (ie.
> ....name="">IS10744:arch name....). Plus, the output
> wouldn't work in the
> HTML document, as it would be <? IS10744 (space between ? and
> IS10744).
>
> I don't seem to be able to use a predefined general entity
> (ie :) to
> replace the colon.
>
>
> This is the HTML file which works:
>
> <?IS10744:arch
> name="linkone-enabled"
> public-id="-//LinkOne//NOTATION AFDR ARCBASE Linkone enabled//EN"
> auto=nArcAuto?>
> <html xmlns="http://www.w3.org/TR/REC-html40">
>
> <table>
> <tr linkone-enabled="entry">
> <td linkone-enabled="field" le-name="Stock Code"
> le-select="always">500100</td>
> <td linkone-enabled="field" le-name="Part Number"
> le-select="hide">WR151-12</td>
> <td>3/4" Wrench</td>
> <td>ea</td>
> </tr>
> </table>
>
>
>
>
> This is my XML:
>
> <?xml version="1.0"?>
> <?xml:stylesheet type='text/xsl' href='StockCodesStylesheet.xsl'?>
>
> <stockcodes>
> <indivitems>
> <groupcode>Bolts</groupcode>
> <stockcode>0015236</stockcode>
> <uoi>Ea</uoi>
>
> <supplier>
> <suppliername>ABC Supplies</suppliername>
>
> <supplieraddress>
> <supplierstreet>123 Maple Way</supplierstreet>
> <suppliercity>Wpg</suppliercity>
> <supplierpostal>R3J2E7</supplierpostal>
> </supplieraddress>
> </supplier>
>
> <stockdescriptions>
> <description1>Bolt</description1>
> <description2>1/2 inch</description2>
> </stockdescriptions>
>
> <partnumber>12bbdgr531</partnumber>
> </indivitems>
>
>
>
> This is the XSL:
>
> <?xml version='1.0' encoding='UTF-8' ?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="html" indent="yes"/>
>
> <xsl:template match="stockcodes">
>
> <xsl:processing-instruction
> name="IS10744:arch)">name="linkone-enabled"
> public-id="-//LinkOne//NOTATION AFDR ARCBASE Linkone
> enabled//EN"
> auto=nArcAuto
> </xsl:processing-instruction>
>
> <table>
> <xsl:for-each select="indivitems">
> <tr linkone-enabled="entry">
> <td linkone-enabled="field" le-name="part-number"
> le-select="always">233355</td>
> <td linkone-enabled="field"
> le-name="Description"><xsl:value-of
> select="stockdescriptions/description2"/></td>
> <td><xsl:value-of select="uoi"/></td>
> </tr>
> </xsl:for-each>
> </table>
> </xsl:template>
> </xsl:stylesheet>
>
>
>
> What do I need to do to fix this?
>
> Thank you,
> Trevor
>
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today
> - it's FREE!
> http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
|