xsl-list
[Top] [All Lists]

Re: Newbie Q: Why are element contents being passed through?

2003-04-09 22:09:04
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(_at_)atheist(_dot_)com> wrote in message
news:3E94E9D3(_dot_)8080305(_at_)atheist(_dot_)com(_dot_)(_dot_)(_dot_)
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