[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] inserting structure


Subject: [xsl] inserting structure
From: Manfred Staudinger <manfred.staudinger@xxxxxxxxx>
Date: Sat, 2 Jul 2005 19:54:52 +0200

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, '&#xA;')">
      <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, '&#xA;')" />
            <xsl:call-template name="replaceLineBreaks">
               <xsl:with-param name="string"
select="substring-after($string, '&#xA;')" />
               <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, '&#xA;')" />
            <xsl:call-template name="replaceLineBreaks">
               <xsl:with-param name="string"
select="substring-after($string, '&#xA;')" />
               <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, '&#xA;')" />
            <xsl:text>]</xsl:text>
            <xsl:call-template name="replaceLineBreaks">
               <xsl:with-param name="string"
select="substring-after($string, '&#xA;')" />
               <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, '&#xA;')" />
            <xsl:call-template name="replaceLineBreaks">
               <xsl:with-param name="string"
select="substring-after($string, '&#xA;')" />
               <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