[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A simple guy with a simple problem
- From: Dan Diebolt <dandiebolt@yahoo.com>
- To: xml-dev@lists.xml.org
- Date: Wed, 14 Mar 2001 11:53:44 -0800 (PST)
Hi, its Bob again. I muttered along with
my assignment and made some progress but
feel free to comment as it wasn't an easy
task.
#foo.dtd
<!ELEMENT foo (lit)*>
<!ELEMENT lit (#PCDATA)>
<!ATTLIST lit text CDATA "STUFF">
#foo.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="foo.xsl"?>
<!DOCTYPE foo SYSTEM "foo.dtd" [
<!ENTITY bar "This is entity STUFF and some more
STUFF.">
]>
<foo>
<lit text="hello">
<![CDATA[This is literal STUFF and some more STUFF.]]>
</lit>
<lit>
&bar;
</lit>
</foo>
#foo.xsl
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:variable name="content">
<xsl:value-of select="."/>
</xsl:variable>
<xsl:call-template name="substitute">
<xsl:with-param name="input" select="$content"/>
<xsl:with-param name="from" select="'STUFF'"/>
<xsl:with-param name="to" select="'stuff'"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="substitute">
<xsl:param name="input"/>
<xsl:param name="from"/>
<xsl:param name="to"/>
<!--
calling substitute:<p/>
input=<xsl:value-of select="$input"/><p/>
from=<xsl:value-of select="$from"/><p/>
to=<xsl:value-of select="$to"/><hr/>
-->
<xsl:variable name="front"
select="substring-before($input,$from)"/>
<xsl:variable name="rear"
select="substring-after($input,$from)"/>
<xsl:value-of select="concat($front,$to)"/>
<xsl:choose>
<xsl:when test="contains($rear,$from)">
<xsl:call-template name="substitute">
<xsl:with-param name="input" select="$rear"/>
<xsl:with-param name="from" select="$from"/>
<xsl:with-param name="to" select="$to"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$rear"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices.
http://auctions.yahoo.com/