Announcement

Collapse
No announcement yet.

xslt attributewerte

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

  • xslt attributewerte

    Hallo zusammen,

    habe ein stylesheet für folgendes XML Dokument erstellt, dass mehrere Bücher enthält, nach dem Muster

    Code:
    <books>
      <book no="1">
        <publisher name="P1"/>
        <price>10</price>
        <title>T1</title>
      </book>
    und hier das template für book

    Code:
    <xsl:template match="book">
    	<book>
    	<xsl:attribute name="no"/>
    	<xsl:value-of select="normalize-space(@no)"/>
    	<xsl:apply-templates>
    	</xsl:apply-templates>
    	</book>
    	</xsl:template>
    Wenn ich das Stytlesheet auf das XML Dokument anwende erhalte ich durch den XSLT Prozessor u.a. folgenden Output:

    Code:
    <?xml version="1.0"?>
    <books>
    <book no ="">1
    etc.
    Vielleicht simpel, aber ich verstehe nicht, warum er mit den Attributwert von no nicht innerhalb des elements book (im Outputdokument) einfügt. Weiß jemand, warum er den wert außerhalb des Tags (im Outputdokument) schriebt? Wo liegt da mein Fehler?
    Danke vielmals

  • #2
    Dem Attribut wird wegen dem abschließenden / kein Wert zugewiesen.

    Verwende diesen Ansatz:
    Code:
    <xsl:template match="book">
      <book>
        <xsl:attribute name="no">
          <xsl:value-of select="normalize-space(@no)"/>
        </xsl:attribute>
        <xsl:apply-templates/>
      </book>
    </xsl:template>
    oder, weil xsl:attribute hier nicht nötig ist, besser diesen:

    Code:
    <xsl:template match="book">
      <book no="{normalize-space(@no)}">
        <xsl:apply-templates/>
      </book>
    </xsl:template>
    Evtl. wäre je nach Kontext auch xsl:copy-of interessant.

    Comment


    • #3

      mal wieder vergessen zu schließen- thanx

      Comment

      Working...
      X