Thomas J.S.: Auf Text-Knoten überprüfen

Beitrag lesen

hallo Paul,

ja, nd es tut das auch.
was genau funktioniert nicht so wie du es willst?
er parst beide tags (Fall1 und Fall2)

ja natürlich: <xsl:template match="person"> trifft ja auf alle person elemente (mit oder ohne kinderelemente.

</input></p>
   ^^^^^^^^^^^^
das solltest du in der form eher nicht machen.

muss so sein, sonst moniert der xslt-Prozessor das fehlende End-tag

nur in deinem ersten code fehlen die start tags.

Hier nochmal das komplette Sheet:

<xsl:template name="tag">
<xsl:param name="id"/>
<xsl:if test="child::text()">
<p> <xsl:attribute name="class">formfield</xsl:attribute>
<xsl:value-of select="name()"/>xsl:text: </xsl:text>
<input>
<xsl:attribute name="name"><xsl:value-of select="local-name()"/><xsl:value-of select="$id"/></xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
</input></p>
</xsl:if>
</xsl:template>

hm... ich verstehe nicht was daran nicht funktioniert. es wird nur dann etwas geschrieben, wenn der kindknoten ein text ist. das funktioniert bei mir sowohl mit saxon als auch mit dem IE.

------
<?xml version="1.0"?>
<document>
 <header>
  <name>Ein Dokument</name>
  <title>Untertitel</title>
  <date>20020518</date>
  <author>ich</author>
  <author><text></text></author>
  <author><text2>222222222222</text2></author>
 </header>
 <content>
   <text>blabla</text>
 </content>
</document>
--------------

grüße
thomas

ps: output vom saxon:
--------------------------
<p class="formfield">document: <input name="document1" value="&#xA; &#xA;  Ein Dokument&#xA;  Untertitel&#xA;  20020518&#xA;  ich&#xA;    &#xA;     222222222222&#xA; &#xA; &#xA;   blabla&#xA; &#xA;"></p>
<p class="formfield">header: <input name="header2" value="&#xA;  Ein Dokument&#xA;  Untertitel&#xA;  20020518&#xA;  ich&#xA;    &#xA;     222222222222&#xA; "></p>
<p class="formfield">name: <input name="name3" value="Ein Dokument"></p>
<p class="formfield">title: <input name="title4" value="Untertitel"></p>
<p class="formfield">date: <input name="date5" value="20020518"></p>
<p class="formfield">author: <input name="author6" value="ich"></p>
<p class="formfield">text2: <input name="text210" value="222222222222"></p>
<p class="formfield">content: <input name="content11" value="&#xA;   blabla&#xA; "></p>
<p class="formfield">text: <input name="text12" value="blabla"></p>