Subject: RE: Resolving ENTITY attributes From: Gabriel Paiz III <gpaiz@xxxxxxxxx> Date: Mon, 3 May 1999 09:44:34 -0700 |
Re: > >> Reading the XSLT spec, I don't see a way of resolving ENTITY-type > >> attribute values. > >... > >> Is there a way to do this? > > > <!DOCTYPE xmldoc ... [ > <!ENTITY img1 SYSTEM "image1.gif" NDATA gif> > ... > ]> > <xmldoc> > ... > <xmlimg src="img1"/> > ... > </xmldoc> If you're working with IE5, you can use something like below to save system ids and match entities to them. The Microsoft site warns about using globals in stylesheets, http://msdn.microsoft.com/xml/xsl/tutorials/script-eval.asp so it might not work in all situations. 1) Is there a way to test for the type of a node in the new draft? 2) The test only works if the template rule is first and doesn't have a match pattern. <!-- ******** default element templates ************ --> <xsl:template> <xsl:if test=".[nodeType() = 6]"> <xsl:eval>saveSystemId(this);</xsl:eval> </xsl:if> <xsl:apply-templates/> </xsl:template> <xsl:template match="textnode()"><xsl:value-of/></xsl:template> <!-- ******** example rule ********* --> <xsl:template match="sgmlimg"> <xsl:element name="img"> <xsl:attribute name="src"> <xsl:eval>lookupSystemId(this, "src");</xsl:eval> </xsl:attribute> </xsl:element> </xsl:template> <xsl:script> //<![CDATA[ var sEntities = new Array(); function saveSystemId(oNode) { var sName = oNode.nodeName; if (sName.length == 0) return; sEntities[sName] = oNode.systemId; } function lookupSystemId(oNode, sAttr) { var oAttrMap = oNode.attributes; if (oAttrMap == null) return; var oAttrNode = oAttrMap.getNamedItem(sAttr); if (oAttrNode == null) return; var sName = oAttrNode.value; // or, if you can assume the attribute will always exist // var sName = oNode.attributes.getNamedItem(sAttr).value; if (sName.length == 0) return; return(sEntities[sName]); } //]]> </xsl:script> __________________________________ Gabriel Paiz III SPX - Valley Forge T.I.S. 25691 Atlantic Ocean Drive Suite B-7 Lake Forest, CA 92630 USA www.vftis.com __________________________________ Tel: (949) 460 0094 Fax: (949) 460 0095 e-Mail: gpaiz@xxxxxxxxx __________________________________ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Resolving ENTITY attributes, Rick Geimer | Thread | Administrivia, XSL-List Owner |
Hybrid SGML/XML (was Re: Resolving , Rick Geimer | Date | Re: HTML from XML throught XSL with, Matt MacKenzie |
Month |