Subject: Re: [xsl] NMTOKENS problem From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 12 Feb 2015 20:26:03 -0000 |
Your error is the @eid reference on line 606: <context contextMappingID="{.}" docset="{$alias}" file="{$deliverable}.htm#{@eid}"/> Because you're inside the for-each, the context item is a string, so the reference to @eid can't be resolved. You need to capture the value of @eid into a variable before the for-each and then use that variable. Cheers, Eliot bbbbb Eliot Kimber, Owner Contrext, LLC http://contrext.com On 2/12/15, 2:11 PM, "Craig Sampson craig.sampson@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >Hi All, > I am adding a template to one of my transforms that writes out an XML >navigation file in addition to the HTML files created by the transform. > > The DTD defines the softwareContextID attribute as NMTOKENS so that it >can contain one or more identified places in our software. I am using >tokenize to access each NMTOKEN in the attribute. When I run the program >(XSLT2 using SAXON EE) > with the b<context b&>b output line commented out everything functions >and I get two btoken: xxxb comments in the output file. > But when I uncomment the output line the transform fails to compile and >I get an error message. > Ibve included three scenarios below. Can anyone tell me what the >problem is and how to fix it? >Thanks, > Craig > >I follow this list using the digest mode, so I wonbt see any responses >till tomorrow unless you also CC me at: >craig.sampson@xxxxxxx > >Snippet from XML input file: ><topic eid="p1lt7i0ekfifxnn0z4ph10m29vhl" helpID="about" onlineTOC="yes" >printTOC="yes" type="unassigned" xml:lang="en" >softwareContextID="craigabout000"> >... ><subSubTopic eid="n0dpmvrz3i0s7gn18cvfhfdo7jr4" >helpID="subsubtopictest01" softwareContextID="craig005subsubtop >craig006subsubtop"> > >******************************************************************* > >Try with tokenize being used to pick out the NMTOKEN's from the >softwareContextID attribute: > <xsl:for-each select="subSubTopic"> > <xsl:if test="@softwareContextID"> > <xsl:for-each select="tokenize(@softwareContextID,' ')"> ><!-- NMTOKENS --> > <xsl:comment> token: <xsl:value-of >select="."/></xsl:comment> > <xsl:if test="upper-case(.)!='DEFAULTLANDINGPAGE'"> >line 606: <context contextMappingID="{.}" docset="{$alias}" >file="{$deliverable}.htm#{@eid}"/> > </xsl:if> > </xsl:for-each> <!-- NMTOKEN --> > </xsl:if> > </xsl:for-each> <!-- subSubTopic --> > >FATAL SYNTAX ERROR:: >Required item type of the context item for the attribute axis is node(); >supplied value has item type xs:string >file:/C:/java/ide/eclipse/4.4/vert-i4xis15/eclipsedata/i4xis15/Publication >s.XmlInformationSystem.XisBuild/Source/ >Stylesheets/eRoot.xsl, line 606 column -1 > > >******************************************************************* > >Try with variable "scID" declared as string: > <xsl:for-each select="subSubTopic"> > <xsl:if test="@softwareContextID"> > <xsl:for-each select="tokenize(@softwareContextID,' ')"> ><!-- NMTOKENS --> > <xsl:variable name="scID" as="xs:string" select="."/> ><!-- treat NMTOKEN as string --> > <xsl:comment> token: <xsl:value-of >select="$scID"/></xsl:comment> > <xsl:if test="upper-case($scID)!='DEFAULTLANDINGPAGE'"> >line 607: <context contextMappingID="{$scID}" docset="{$alias}" >file="{$deliverable}.htm#{@eid}"/> > </xsl:if> > </xsl:for-each> <!-- NMTOKEN --> > </xsl:if> > </xsl:for-each> <!-- subSubTopic --> > >FATAL SYNTAX ERROR:: >Required item type of the context item for the attribute axis is node(); >supplied value has item type xs:string >file:/C:/java/ide/eclipse/4.4/vert-i4xis15/eclipsedata/i4xis15/Publication >s.XmlInformationSystem.XisBuild/Source/ >Stylesheets/eRoot.xsl, line 607 column -1 > > >******************************************************************* > >Try with problem line commented out so the token comment will be written >out: > <xsl:for-each select="subSubTopic"> > <xsl:if test="@softwareContextID"> > <xsl:for-each select="tokenize(@softwareContextID,' ')"> ><!-- NMTOKENS --> > <xsl:comment> token: <xsl:value-of >select="."/></xsl:comment> > <xsl:if test="upper-case(.)!='DEFAULTLANDINGPAGE'"> > <!-- context contextMappingID="{.}" docset="{$alias}" >file="{$deliverable}.htm#{@eid}"/ --> > </xsl:if> > </xsl:for-each> <!-- NMTOKEN --> > </xsl:if> > </xsl:for-each> <!-- subSubTopic --> > >Output: ><?xml version="1.0" encoding="UTF-8"?> ><contextMapping xmlns="http://www.w3.org/1999/xhtml"> > <defaultContext docset="crsTestProject" >file="about.htm#p1s028tywy00run0zf1d2tyrkafa"/> > <contexts> > <context contextMappingID="craig001xyz" > docset="crsTestProject" > file="n070nvz1z69ek3n1jqzfc09i839y.htm"/> > <context contextMappingID="craig002abc" > docset="crsTestProject" > file="p0ry6p2ed3rnthn1cz83qglec18i.htm"/> > <context contextMappingID="craigabout000" > docset="crsTestProject" > file="about.htm"/> > <!-- token: craig005subsubtop--> > <!-- token: craig006subsubtop--> > <context contextMappingID="craig002abcdef" > docset="crsTestProject" > file="p0jaax05zteg9an1j3iey30ni7g5.htm"/> > </contexts> ></contextMapping> > > >XSL-List info and archive ><http://www.mulberrytech.com/xsl/xsl-list>EasyUnsubscribe ><-list/1278982> >(by email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] NMTOKENS problem, Craig Sampson craig. | Thread | [xsl] XSLT 3.0: Questions about the, Dimitre Novatchev dn |
[xsl] NMTOKENS problem, Craig Sampson craig. | Date | Re: [xsl] NMTOKENS problem, Christopher R. Maden |
Month |