Subject: Re: Newbie Q: Why are element contents being passed through?
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Thu, 10 Apr 2003 07:09:04 +0200
|
Read about the "default rules" or "built-in template rules".
The XSLT 1.0 spec (http://www.w3.org/TR/xslt#built-in-rule) says:
"There is a built-in template rule to allow recursive processing to continue
in the absence of a successful pattern match by an explicit template rule in
the stylesheet"
and
"There is also a built-in template rule for text and attribute nodes that
copies text through:
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>"Most probably you have an xsl:apply-templates in your code
against a node-set some of whose nodes are not matched by templates in your
code. Then the built-in templates are instantiated/applied by the XSLT
processor. This is done in a recursive manner until text nodes are reached,
at which point the built-in template rule (for text and attribute nodes)
above copies the contents of the text nodes to the output.
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
"Elijah Mori" <elijah@xxxxxxxxxxx> wrote in message
news:3E94E9D3.8080305@xxxxxxxxxxxxxx
> Many apologies if this is a FAQ; I didn't find it when looking, but the
> FAQ at dpawson.co.uk is massive and I may have missed it.
>
> I have an xml source doc which I want to turn into an xhtml document
> with a form, inputs, labels and so forth. What is happening is that the
> contents of the elements in the xml document are turning up in the
> output and I can't understand why. I have simplified the xml and the xsl
> until there is almost nothing happening, and the element contents still
> come through.
>
> What can I do? Any help will be appreciated. (And if there is any way to
> deal with the bizarre spacing in the output document that would be
> appreciated too!)
>
> Best regards
> Eli
>
>
> Here are the two input docs and the output.
> xml:
> <?xml version="1.0"?>
> <form name="rateshop" action="backend/update-shop.php">
> <shopid>
> <label>Shop ID</label>
> <input type="hidden"/>
> </shopid>
> <name>
> <label>Name</label>
> <input type="text"/>
>
> </name>
> <regionid>
> <label>Region</label>
> <input type="select" option="singlechoice"><option
> value="1">Hokkaido</option><option value="2">Aomori</option><option
> value="3">Iwate</option><option value="4">Miyagi</option><option
> value="5">Yamagata</option></input>
>
> </regionid>
> <city>
> <label>City</label>
> <input type="text"/>
> </city>
> <blockaddress>
> <label>Block Address</label>
> <input type="text"/>
>
> </blockaddress>
> <phonenumber>
> <label>Phone Number</label>
> <input type="text"/>
> </phonenumber>
> <openingtime>
> <label>Opening Time</label>
> <input type="select" option="singlechoice"><option
> value="10:00">10:00</option><option value="11:00">11:00</option><option
> value="12:00">12:00</option><option value="13:00">13:00</option><option
> value="14:00">14:00</option><option value="15:00">15:00</option>
> </openingtime>
> <closingtime>
> <label>Closing Time</label>
> <input type="select" option="singlechoice"><option
> value="00:00">00:00</option><option value="01:00">01:00</option><option
> value="02:00">02:00</option><option value="03:00">03:00</option><option
> value="04:00">04:00</option><option value="05:00">05:00</option><option
> value="23:00">23:00</option></input>
>
> </closingtime>
> <rating>
> <label>Rating</label>
> <input type="select" option="singlechoice">
> <option>1</option>
> <option>2</option>
> <option>3</option>
>
> <option>4</option>
> <option>5</option>
> <option>6</option>
> <option>7</option>
> <option>8</option>
> <option>9</option>
>
> <option>10</option>
> </input>
> </rating>
> <userid>
> <label>User ID</label>
> <input id="userid" type="hidden"/>
> </userid>
> </form>
>
>
> xslt:
> <?xml version="1.0"?>
> <xsl:stylesheet version =' 1.0'
> xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
> <xsl:output
> doctype-system='http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'
> doctype-public='-//W3C//DTD XHTML 1.1//EN'
> method='xml'
> />
>
> <xsl:output
> encoding="iso-8859-1"
> />
>
> <xsl:template match='/'>
> <html xmlns='http://www.w3.org/1999/xhtml'>
> <head>
> <title>Shop</title>
> <link href='css/site.css' type='text/css' rel='stylesheet'/>
> </head>
> <body>
> <xsl:apply-templates/>
> </body>
> </html>
> </xsl:template>
>
> <xsl:template match='form'>
> <form>
> <xsl:copy-of select='@*'/>
> <xsl:apply-templates/>
> </form>
> </xsl:template>
>
> </xsl:stylesheet>
>
> output:
> <?xml version="1.0" encoding="iso-8859-1"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
> "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <title>Shop</title>
> <link href="css/site.css" type="text/css" rel="stylesheet"/>
>
> </head>
> <body>
> <form name="rateshop" action="backend/update-shop.php">
>
> Shop ID
>
>
>
> Name
>
>
>
> Region
> HokkaidoAomoriIwateMiyagiYamagata
>
>
> City
>
>
>
> Block Address
>
>
>
> Phone Number
>
>
>
> Opening Time
> 10:0011:0012:0013:0014:0015:00
>
>
> Closing Time
> 00:0001:0002:0003:0004:0005:0023:00
>
>
> Rating
>
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
>
>
>
> User ID
>
>
> </form>
> </body>
> </html>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|