xsl-list
[Top] [All Lists]

inserting structure

2005-07-02 10:54:52
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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>