Subject: RE: [xsl] inserting structure From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sat, 2 Jul 2005 19:05:03 +0100 |
Oddly, your title says it all: you need to insert structure, but instead you are trying to insert characters strings like "</p>" and "<p>". XSLT takes a tree as input and produces a tree as output; to produce element nodes in the result tree you need to use the XSLT instructions that create element nodes, specifically xsl:element, xsl:copy, or literal results elements such as <p/>. I'm sorry, but I don't have time this evening to show you a solution to this problem. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Manfred Staudinger [mailto:manfred.staudinger@xxxxxxxxx] > Sent: 02 July 2005 18:55 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] inserting structure > > Hi, I'm new to both the list and xsl. I've build a test case: > > <?xml version="1.0" encoding="UTF-8" ?> > <?xml-stylesheet type="text/xsl" href="doc1.xsl"?> > <!DOCTYPE doc [ > <!ELEMENT doc (index,name)> > <!ELEMENT index (EMPTY)> > <!ATTLIST index > level1 CDATA #REQUIRED> > <!ELEMENT name (#PCDATA)> > <!ATTLIST name > reg CDATA #IMPLIED> > <!ENTITY HHStA "Wien, HHStA,"> > ]> > <doc> > <index level1="Pernstein, Vratislav von -" /> > <index level1="Philipp II. von Spanien" /> > Zeitungsbericht > 1560 April 17, Toledo > Der Herr von Pernstain ist auf 8. diz von hinnen mit seiner > gsellschafft nach Sarragossa vnd > Barzalana verrugkht, von dannen well er vber- > fol. 394r > farn auf Genua, Maylannd vnd durch > Tyroll p[er] Wienn. Er hat dem Kunig ausser dess so er von Kay Mt. > vnd Khu: w:e von Behem > wegen gethan, fur sich selbst ain schon zobln pelz vereert, Ime hat > aber der Kunig mer nit als ain > Kettin von 2000 [] vereert, gleichwol er sich merers > verseh[en]. ... > D[er] Kunig soll den <name reg="Ragier Patie">Ragier > Patie</name> angenomen haben, > hieuor der <name reg="Maria">Kunigin Maria</name> Camerling vnd > hofmeist[er] In Spania > gwest, gibt im Jarlich 2000 Ducat[en] dem Tirgarten vnd annderm > nach Niderlenndisch[en] > brauch zu wartten vnd zue zurichten. > &HHStA; Reichskanzlei, Geschriebene Zeitungen 7, fol. 393v, 394r. > </doc> > > <?xml version="1.0" encoding="UTF-8" ?> > <xsl:stylesheet version="1.0" > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:output method = "html" /> > <xsl:template match="/" name="replaceLineBreaks"> > <xsl:param name="string" select="." /> > <xsl:param name="switch" select="0" /> > <xsl:choose> > <xsl:when test="contains($string, '
')"> > <xsl:choose> > <xsl:when test="starts-with($string, ' ')"> > <![CDATA[</p><p>]]> > <br /> > <xsl:value-of select="$switch" /> > <xsl:text>6*</xsl:text> > <xsl:value-of select="substring-before($string, > '
')" /> > <xsl:call-template name="replaceLineBreaks"> > <xsl:with-param name="string" > select="substring-after($string, '
')" /> > <xsl:with-param name="switch" select="1" /> > </xsl:call-template> > </xsl:when> > <xsl:when test="starts-with($string, ' ')"> > <br /> > <xsl:value-of select="$switch" /> > <xsl:text>3*</xsl:text> > <xsl:if test="$switch=0"> > <![CDATA[<p>]]> > </xsl:if> > <xsl:value-of select="substring-before($string, > '
')" /> > <xsl:call-template name="replaceLineBreaks"> > <xsl:with-param name="string" > select="substring-after($string, '
')" /> > <xsl:with-param name="switch" select="1" /> > </xsl:call-template> > </xsl:when> > <xsl:when test="starts-with($string, 'fol.')"> > <xsl:text>[</xsl:text> > <xsl:value-of select="substring-before($string, > '
')" /> > <xsl:text>]</xsl:text> > <xsl:call-template name="replaceLineBreaks"> > <xsl:with-param name="string" > select="substring-after($string, '
')" /> > <xsl:with-param name="switch" select="1" /> > </xsl:call-template> > </xsl:when> > <xsl:otherwise> > <br /> > <xsl:value-of select="$switch" /> > <xsl:text>x*</xsl:text> > <xsl:if test="$switch=1"> > <![CDATA[</p>]]> > </xsl:if> > <xsl:value-of select="substring-before($string, > '
')" /> > <xsl:call-template name="replaceLineBreaks"> > <xsl:with-param name="string" > select="substring-after($string, '
')" /> > <xsl:with-param name="switch" select="0" /> > </xsl:call-template> > </xsl:otherwise> > </xsl:choose> > </xsl:when> > <xsl:otherwise> > <xsl:value-of select="$string" /> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > </xsl:stylesheet> > > wich gives the output (Firefox 1.04): > > 0x* > 0x* > 0x*Zeitungsbericht > 0x*1560 April 17, Toledo > 03* <p> Der Herr von Pernstain ist auf 8. diz von hinnen mit seiner > gsellschafft nach Sarragossa vnd > 13* Barzalana verrugkht, von dannen well er vber- [fol. 394r] > 13* farn auf Genua, Maylannd vnd durch > 13* Tyroll p[er] Wienn. Er hat dem Kunig ausser dess so er von Kay Mt. > vnd Khu: w:e von Behem > 13* wegen gethan, fur sich selbst ain schon zobln pelz vereert, Ime > hat aber der Kunig mer nit als ain > 13* Kettin von 2000 [] vereert, gleichwol er sich merers > verseh[en]. ... </p><p> > 16* D[er] Kunig soll den Ragier Patie angenomen haben, > 13* hieuor der Kunigin Maria Camerling vnd hofmeist[er] In Spania > 13* gwest, gibt im Jarlich 2000 Ducat[en] dem Tirgarten vnd annderm > nach Niderlenndisch[en] > 13* brauch zu wartten vnd zue zurichten. > 1x* </p> Wien, HHStA, Reichskanzlei, Geschriebene Zeitungen > 7, fol. 393v, 394r. > > I wanted to get for example <p> and other stuff inserted, but had to > cover it by cdata to become well formed. Also the recursive template > prevents me from adding html header information. > In addition to a solution I would appreciate poiters to > further readings > about this... > > Manfred Staudinger, Vienna, Austria
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] inserting structure, Manfred Staudinger | Thread | Re: [xsl] inserting structure, Manfred Staudinger |
[xsl] inserting structure, Manfred Staudinger | Date | [xsl] What's the difference between, Frans Englich |
Month |