Announcement

Collapse
No announcement yet.

Probleme bei der Textausgabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Probleme bei der Textausgabe

    Hallo zusammen, ich hab meinen Text richtig zu konvertieren

    xml
    Code:
    <doc>
     <artikel>
      <text>
       <p>
        <ortsmarke>Dresden </ortsmarke>
        Gegen Sachsens Kultusminister Roland Wöller (CDU) werden
        Plagiatsvorwürfe laut. Im Forum der Internetplattform «VroniPlag»
        sind Auszüge der Doktorarbeit des 41-Jährigen veröffentlicht, die
        Plagiate aus einer Magisterarbeit eines Studenten belegen sollen.
      </p>
      <p>
       Zwei Jahre später wurde die Arbeit von einem Verlag publiziert.
       Daraufhin wurde innerhalb der Universität der Vorwurf erhoben,
    
       <foto-online attr1="InlinebildLinks" class="InlinebildLinks">
        <inline-foto class="Inlinebild-links" fileref="1312374976.jpg?uuid=daa39fd2-bdce-11e0-8cfd-85840467fecc" />
        <inline-foto-bz>
         <p>Indien</p>
        </inline-foto-bz>
        <foto-quelle>
         <ld pattern=" " />
         <p>Foto: AP</p>
        </foto-quelle>
       </foto-online>
    				
       Wöllers Dissertation basiere in wichtigen Teilen auf der
       Magisterarbeit eines Studenten, ohne dass dies in hinreichendem Maße
       kenntlich werde.
      </p>
      <p>Wöller habe wissenschaftlich korrekt auf die einschlägigen Studien
       aus der Magisterarbeit hingewiesen. Beim Vergleich beider Arbeiten
       habe sich jedoch gezeigt, dass Wöller «im konkreten Einzelfall nicht
       im hinreichenden Maße mithilfe von Fußnoten auf die teilweise
       inhaltlich übereinstimmenden und sprachlich ähnlichen Stellen»
       hingewiesen habe, heißt es in dem Schreiben. In der nächsten Auflage
       der Dissertation sollten diese Nachweise eingearbeitet sein,
       empfiehlt der Klein mit Nachdruck.</p>
      </text>
     </artikel>
    </doc>
    mein XSL Versuch
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
     <xsl:output method="xml" encoding="UTF-8" indent="yes" cdata-section-elements="title text description"/>
    
     <xsl:template match="doc/artikel/text">
      <xsl:variable name="text">
       <xsl:for-each select="p">
        <xsl:text>&lt;p&gt;</xsl:text>
    
        <!-- zusammenbasteln des images -->
    
        <xsl:variable name="inlinePic"><xsl:value-of select="foto-online/inline-foto/@fileref" /></xsl:variable>
    	<xsl:choose>
    	 <xsl:when test="$inlinePic!=''">
    	  <xsl:variable name="height"><xsl:value-of select="foto-online/height"/></xsl:variable>
    	  <xsl:choose>	
    	   <xsl:when test="$height!=''">
    	    <xsl:value-of select="$height"/>
    	   </xsl:when>
    	   <xsl:otherwise>320</xsl:otherwise>
    	  </xsl:choose>
    	  <xsl:variable name="width"><xsl:value-of select="foto-online/width"/></xsl:variable>
    	   <xsl:choose>	
    	    <xsl:when test="$width!=''">
    	     <xsl:value-of select="$width"/>
    	    </xsl:when>
    	    <xsl:otherwise>400</xsl:otherwise>
    	   </xsl:choose>
    									
    	   <xsl:variable name="alt"><xsl:value-of select="foto-online/inline-foto-bz/p"/></xsl:variable>
    	   <xsl:text>&lt;img height="</xsl:text><xsl:value-of select="$height"></xsl:value-of>
    	   <xsl:text>" width="</xsl:text><xsl:value-of select="$width"></xsl:value-of>
    	   <xsl:text>" alt="</xsl:text><xsl:value-of select="$alt"></xsl:value-of>
    	   <xsl:text>" src="/media.imagefile.[extInline:</xsl:text><xsl:value-of select="$inlinePic"></xsl:value-of>
    	   <xsl:text>]"</xsl:text>
    	   <xsl:text>/&gt;</xsl:text>
    	  </xsl:when>
    	</xsl:choose>
    
    	<!--fertig mit images -->		
    		
    	<xsl:value-of select="."/>
            <xsl:text>&lt;/p&gt;</xsl:text>
           </xsl:for-each>
          </xsl:variable>
    		
         <text>
          <xsl:value-of select="$text"/>
         </text>
    		
      </xsl:template>
    </xsl:stylesheet>
    was ich erhalten will:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <text><![CDATA[
     <p>
     Dresden: Gegen Sachsens Kultusminister Roland Wöller (CDU) werden Plagiatsvorwürfe laut. Im Forum der Internetplattform «VroniPlag» sind Auszüge der Doktorarbeit des 41-Jährigen veröffentlicht, die Plagiate aus einer Magisterarbeit eines Studenten belegen sollen.
     </p>
     <p>
      Zwei Jahre später wurde die Arbeit von einem Verlag publiziert. Daraufhin wurde innerhalb der Universität der Vorwurf erhoben, 
      <img height="" width="" alt="Indien" src="/media.imagefile.[extInline:1312374976.jpg?uuid=daa39fd2-bdce-11e0-8cfd-85840467fecc]"/>
      Wöllers Dissertation basiere in wichtigen Teilen auf der Magisterarbeit eines Studenten, ohne dass dies in hinreichendem Maße kenntlich werde.
     </p>
     <p>
      Wöller habe wissenschaftlich korrekt auf die einschlägigen Studien aus der Magisterarbeit hingewiesen. Beim Vergleich beider Arbeiten habe sich jedoch gezeigt, dass Wöller «im konkreten Einzelfall nicht im hinreichenden Maße mithilfe von Fußnoten auf die teilweise inhaltlich übereinstimmenden und sprachlich ähnlichen Stellen» hingewiesen habe, heißt es in dem Schreiben. In der nächsten Auflage der Dissertation sollten diese Nachweise eingearbeitet sein, empfiehlt der Klein mit Nachdruck. 
     </p>]]>
    </text>
    Probleme bereiten mit die <ortsmarke> sowie die Verschachtelung innerhalb des <p>-Tags. Desweiteren muss ich mir aus dem Element im <p> ein Imagestring zusammen bauen und ihn an die richtige stelle im String setzen was mir bissher nicht im ansatz gelungen ist.

    Irgendeine Idee, wie ich das lösen kann?

    Danke!

  • #2
    Welche XSLT-Version verwendest du, welchen XSLT-Prozessor verwendest du?

    Comment


    • #3
      benutze den SaxonHE9.3N

      Comment


      • #4
        Ich würde das eher folgendermaßen versuchen:
        Code:
        <xsl:stylesheet
          xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
          version="2.0"> 
          
          <xsl:import href="xml-to-string.xsl"/>
          
          <xsl:param name="default-height" select="320"/>
          <xsl:param name="default-width" select="400"/>
          
          <xsl:output method="xml" cdata-section-elements="text"/>
          
          <xsl:template match="/">
            <xsl:apply-templates select="doc/artikel/text"/>
          </xsl:template>
          
          <xsl:template match="doc/artikel/text">
            <xsl:copy>
              <xsl:variable name="temp">
                <xsl:apply-templates/>
              </xsl:variable>
              <xsl:call-template name="xml-to-string">
                <xsl:with-param name="node-set" select="$temp"/>
              </xsl:call-template>
            </xsl:copy>
          </xsl:template>
          
          <xsl:template match="p">
            <xsl:copy>
              <xsl:apply-templates/>
            </xsl:copy>
          </xsl:template>
          
          <xsl:template match="foto-online[not(inline-foto/@fileref)]"/>
          
          <xsl:template match="foto-online[inline-foto/@fileref]">
            <img
              height="{if (height) then height else $default-height}"
              width="{if (width) then width else $default-width}"
              alt="{inline-foto-bz/p}"
              src="/media.imagefile.[extInline:{inline-foto/@fileref}"/>
          </xsl:template>
          
        </xsl:stylesheet>
        Die importierte Datei gibt es unter http://lenzconsulting.com/xml-to-string/.

        Oder wenn du die kommerzielle Version von Saxon 9 benutzen kannst, dann gibt es eine Erweiterungsfunktion http://www.saxonica.com/documentatio.../serialize.xml, die man per
        Code:
          <xsl:template match="doc/artikel/text">
            <xsl:copy>
              <xsl:variable name="temp">
                <xsl:apply-templates/>
              </xsl:variable>
             <!-- 
              <xsl:call-template name="xml-to-string">
                <xsl:with-param name="node-set" select="$temp"/>
              </xsl:call-template>
            -->
           <xsl:value-of xmlns:saxon="http://saxon.sf.net/" select="saxon:serialize($temp)"/>
            </xsl:copy>
          </xsl:template>
        einsetzen kann.

        Comment


        • #5
          ich habe es mit xml-to-string.xsl versucht und geht wunderbar.

          Aber eine Frage hätte ich noch. Die Zeile:
          Code:
          <xsl:template match="foto-online[not(inline-foto/@fileref)]"/>
          hat irgendwie keinen Einfluß auf das Endergebnis.

          Comment


          • #6
            Das ist eine leeres Template, das dafür sorgen soll, das eventuell vorkommende "foto-online"-Elemente, die kein "inline-foto"-Element mit "fileref"-Attribut haben, keine Ausgabe erzeugen.
            Ob du das brauchst, ist anhand des geposteten Beispieldokumentes nicht klar, ich hatte das Template mal geschrieben, weil
            Code:
                <xsl:variable name="inlinePic"><xsl:value-of select="foto-online/inline-foto/@fileref" /></xsl:variable>
            	<xsl:choose>
            	 <xsl:when test="$inlinePic!=''">
            eventuell erwarten lässt, dass das Template nötig ist. Aber es mag je nach der Struktur des Eingabedokumentes nicht notwendig sein, dieses Template zu haben.

            Comment


            • #7
              Ah alles klar, vielen Dank für alles!

              Comment

              Working...
              X