Announcement

Collapse
No announcement yet.

XML Wert einmal ausgeben

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

  • XML Wert einmal ausgeben

    Hi,

    Habe hier nochmals eine Frage und zwar habe ich das vorgegeben:
    Code:
    	
    <Version>V1</Version>
    <Version>V2</Version>
    Wie kann ich nun diese Version so darstellen:

    |Version |V1, V2|

    Ich möchte es gerne in einer Tabelle darstellen:

    Code:
    	<xsl:template match="Version">
    		<tr>
    		<td>
    			<xsl:value-of select="name()"/>
    		</td>
    		<td>
    			<xsl:value-of select="."/>
    		</td>
    		</tr>
    	</xsl:template>
    So bekomme ich allerdings das resultat:

    |Version |V1
    |Version |V2

    Danke für jegliche Hilfe

    mfg Poorsod

  • #2
    Frage Version und following-sibling::Version ab.

    Comment


    • #3
      Ich kenne diese Funktion nicht, könntest du mir auf die Sprünge helfen?

      Denke, dass es irgenwie so geht:

      Code:
      <xsl:if test="following-sibling::Version">
      <verionresult>
      <xsl:value-of select="." />
      </versionresult>
      aber wie muss ich das rundherum schreiben?

      Danke für die Hilfe

      Comment


      • #4
        Es handelt sich um die XPath-Achse "following-sibling", die sich auf nachfolgende Geschwisterelemente bezieht. Gemäß der test-Abfrage lässt sich auch der Wert von following-sibling::Version ermitteln.

        Comment


        • #5
          Ich bekomme immer eine Fehlermeldung im Browser:

          Fehler beim Laden des Stylesheets: Das Parsen eines XSLT-Stylesheets ist fehlgeschlagen.

          Ich habe das geschrieben:

          Code:
          <?xml version="1.0" encoding="iso-8859-1"?>
          <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          
          <xsl:template match="/">
          		<HTML>
          			<Head>
          				<Title>Eine Testerseite</Title>
          			</Head>
          			<Body>
          				<xsl:apply-templates/>
          			</Body>
          		</HTML>
          	</xsl:template>
          	
          <xsl:template match="root">
          	<table border="1">
          		<xsl:apply-templates/>
          	</table>
          </xsl:template>	
          
          <xsl:if test="following-sibling::Version">
          <versionresult>
          <xsl:value-of select="." />
          </versionresult>
          </xsl:if>
          	
          
          	
          </xsl:stylesheet>

          und

          Code:
          <?xml version="1.0" encoding="UTF-8"?>
          <?xml-stylesheet type="text/xsl" href="psy.xsl"?>
          <root>
          <Version>V1</Version>
          <Version>V2</Version>
          </root>
          Verstehe ich hier irgendwas falsch?!?

          Comment


          • #6
            Man kann nicht außerhalb von Templates arbeiten.

            Comment


            • #7
              oh, lol... Hab ich gar nicht bemerkt, thx!

              Also jetzt sieht es zwar annähernd gut aus, jedoch habe ich jetzt einfach das V1 und V2 in einer Tabelle... Wie kann ich jetzt noch Version hineinschreiben?

              Code:
              <?xml version="1.0" encoding="iso-8859-1"?>
              <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
              
              <xsl:template match="/">
              		<HTML>
              			<Head>
              				<Title>Eine Testerseite</Title>
              			</Head>
              			<Body>
              				<xsl:apply-templates/>
              			</Body>
              		</HTML>
              	</xsl:template>
              	
              <xsl:template match="root">
              	<table border="1">
              		<xsl:apply-templates/>
              	</table>
              <xsl:if test="following-sibling::Version">
              <versionresult>
              <xsl:value-of select="." />
              </versionresult>
              </xsl:if>
              </xsl:template>
              	
              
              	
              </xsl:stylesheet>

              Comment


              • #8
                Schreibe den Text entsprechend hin, z. B. mit <xsl:text>Version </xsl:text>.
                BTW: Der Code sieht noch etwas seltsam aus, so außerhalb der Tabelle.

                Comment


                • #9
                  Ok, hab es mal versucht, nun habe ich allerdings einfach 'Version V1'!

                  Code:
                  <?xml version="1.0" encoding="iso-8859-1"?>
                  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                  
                  	<xsl:template match="/">
                  		<HTML>
                  			<Head>
                  				<Title>Eine Testerseite</Title>
                  			</Head>
                  			<Body>
                  				<xsl:apply-templates/>
                  			</Body>
                  		</HTML>
                  	</xsl:template>
                  	
                  <xsl:template match="main">
                  	<table border="1">
                  		<xsl:apply-templates/>
                  	</table>
                  </xsl:template>
                  
                  <xsl:template match="Version">
                  <xsl:if test="following-sibling::Version">
                  <tr>
                  	<td>
                  		<xsl:text>Version</xsl:text>	
                  	</td>
                  	<td>
                  		<versionresult>
                  		<xsl:value-of select="." />
                  		</versionresult>
                  	</td>
                  </tr>
                  </xsl:if>
                  </xsl:template>
                  	
                  
                  	
                  </xsl:stylesheet>

                  Code:
                  <?xml version="1.0" encoding="UTF-8"?>
                  <?xml-stylesheet type="text/xsl" href="psy.xsl"?>
                  <root>
                  	<main>
                  		<Version>V1</Version>
                  		<Version>V2</Version>
                  	</main>
                  
                  </root>

                  Comment


                  • #10
                    In dieser Form kann einfach die xsl:if-Abfrage entfallen.

                    Comment


                    • #11
                      ja nein, dan zeigt es mir im browser so an:

                      Version V1
                      Version V2

                      ich möchte aber

                      Version V1, V2

                      Comment


                      • #12
                        Dann bietet sich eher dieser Ansatz an und es bedarf auch keiner following-sibling-Abfrage:
                        Code:
                        <xsl:template match="main">
                          <table border="1">
                          <tr>
                            <td><xsl:text>Version</xsl:text></td>
                            <td><xsl:apply-templates select="Version"/></td>
                          </tr>
                          </table>
                        </xsl:template>
                        
                        <xsl:template match="Version">
                          <xsl:value-of select="."/>
                          <xsl:if test="position() != last()"><xsl:text>, </xsl:text></xsl:if>
                        </xsl:template>

                        Comment


                        • #13
                          genau das, habe ich gesucht! danke dir!!!

                          Comment


                          • #14
                            war doch nicht genau das, was ich gesucht habe.

                            Denn habe noch mehr elemente im main, die werden jetzt halt ausgeblendet...

                            Comment


                            • #15
                              Code:
                              <?xml version="1.0" encoding="iso-8859-1"?>
                              <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                              
                              	<xsl:template match="/">
                              		<HTML>
                              			<Head>
                              				<Title>Eine Testseite</Title>
                              			</Head>
                              			<Body>
                              				<xsl:apply-templates/>
                              			</Body>
                              		</HTML>
                              	</xsl:template>
                              
                              <xsl:template match="main">
                                <table border="1">
                                <tr>
                                  <td><xsl:text>Version</xsl:text></td>
                                  <td><xsl:apply-templates select="Version"/></td>
                                </tr>
                                </table>
                              </xsl:template>
                              
                              <xsl:template match="Version">
                                <xsl:value-of select="."/>
                                <xsl:if test="position() != last()"><xsl:text>, </xsl:text></xsl:if>
                              </xsl:template>
                              </xsl:stylesheet>

                              Code:
                              <?xml version="1.0" encoding="UTF-8"?>
                              <?xml-stylesheet type="text/xsl" href="psy.xsl"?>
                              <root>
                              	<main>
                              		<Version>V1</Version>
                              		<Version>V2</Version>
                              		<Version2>V3</Version2>
                              		<Version2>V4</Version2>
                              	</main>
                              </root>

                              Comment

                              Working...
                              X