Announcement

Collapse
No announcement yet.

Xslt Problem

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

  • Xslt Problem

    Hallo Zusammen

    Ich mochte für ein XML Document (ein Baum) mit xslt anweisungen uberprüfen ob der unterknote ein Eltern Knoten ist oder nicht .Ich habe mit der Anweisung :
    HTML Code:
    <xsl:choose>
    
                       
                      <xsl:when test="self::parent::node()">
                        <div class="level1">   <xsl:apply-templates  select="ap:Text/@PlainText"/> 
                  </div>
                     </xsl:when>
    
                     
                      <xsl:otherwise>
                       <div class="level2">  <xsl:apply-templates select="ap:Text/@PlainText"/> </div>
                      </xsl:otherwise>
    
    
                   </xsl:choose>
    probiert aber es geht irgenwie nicht ...

    MFG

  • #2
    Weder deine verbale Beschreibung "unterknote ein Eltern Knoten" noch deinen XPath-Ausdruck "self:arent::node()" verstehe ich. 'self' ist eine mögliche XPath-Achse, 'parent' eine andere, aber 'self:arent::node()' macht weder syntaktisch noch semantisch Sinn.
    Poste mal ein Beispiel der XML-Eingabe und dann erkläre genauer, für welchen Knoten du was prüfen willst. So du prüfen willst, ob der aktuelle Kontextknoten Kindsknoten hat, so prüfe
    Code:
    <xsl:when test="node()">
    für jede Art von Kindsknoten oder
    Code:
    <xsl:when test="*">
    für Elementkindsknoten.

    Comment


    • #3
      Xslt Problem

      Hallo Martin

      Beispeil:

      HTML Code:
      <people>
      <person born="1912" died="1954">
      <name>
      <first_name>Alan</first_name>
      <last_name>Turing</last_name>
      </name>
      <profession>computer scientist</profession>
      <profession>mathematician</profession>
      </person>
      <person born="1918" died="1988">
      <name>
      <first_name>Richard</first_name>
      <middle_initial>P</middle_initial>
      <last_name>Feynman</last_name>
      
      
      </name>
      <profession>physicist</profession>
      <hobby>Playing the bongoes</hobby>
      </person>
      <lastupdate>23.05.2004</lastupdate>
      </people>
      Zum Beispiel ob der Element (Knote) <name> Kinder hat oder nicht ?

      Gruss

      Comment


      • #4
        Code:
        <xsl:template match="name">
          <xsl:choose>
            <xsl:when test="*">
               <!-- 'name' Element hat mindestens einen Kindsknoten vom Typ Element -->
               ....
            </xsl:choose>
            <xsl:otherwise>
               <!-- 'name' Element hat keinen Kindsknoten vom Typ Element -->
        </xsl:template>

        Comment


        • #5
          Code:
          <?xml version="1.0"?>
          <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          
          	<xsl:output indent="yes" method="xml"/>
          	<xsl:template match="/">
          		<root>
          			<xsl:apply-templates select="people"/>
          		</root>
          	</xsl:template>
          	<xsl:template match="people">
          		<xsl:apply-templates select="person"/>
          	</xsl:template>
          	<xsl:template match="person">
          	<!-- alle durchlassen die Kindknoten haben -->
          		<xsl:apply-templates select="name[child::*]"/>
          	</xsl:template>
          	<xsl:template match="name">
          	<!-- wenn firstname da dann durch lassen -->
          	<!-- mit child::* entweder first name oder last name vorhanden-->
          	<xsl:if test="count(child::first_name)">
          		<item>
          			<xsl:attribute name="nr">
          			<!-- ausgabe wieviel Kindknoten -->
          				<xsl:value-of select="count(child::*)"/>
          			</xsl:attribute>
          <!-- ausgabe beider namen -->
          			<xsl:value-of select="."/>
          		</item>
          		</xsl:if>
          	</xsl:template>
          </xsl:stylesheet>
          ergebnis
          Code:
          <?xml version='1.0' ?>
          <root>
            <item nr="2">
          			Alan
          			Turing
          		
            </item>
            <item nr="3">
          			Richard
          			P
          			Feynman
          		
            </item>
          </root>

          Comment

          Working...
          X