2015-06-24 29 views
0

我想在我的XML中爲我的XML中的所有7個選項生成表格。通過xslt將XML轉換爲HTML

我想它適用於<xsl:for-each>但我不明白,它只顯示相同的東西。

這裏是我的XML

<?xml version="1.0" encoding="ISO-8859-1"?> 
<?xml-stylesheet type="text/xsl" href="adressbuch.xsl"?> 

<ADRESSBUCH> 
    <PERSON KATEGORIE="Privat"> 
     <ANREDE TITEL="Herr"/> 
     <VOLLER_NAME> 
      <NAME>Müller</NAME> 
      <VORNAME>Hans</VORNAME> 
      <MITTELNAME>Peter</MITTELNAME> 
      <SPITZNAME>meier</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="12.04.1965"/> 
     <BERUF BEZEICHNUNG="Lehrer"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Hinterberg 4</STRASSE> 
       <POSTFACH>357</POSTFACH> 
       <POSTLEITZAHL>56070</POSTLEITZAHL> 
       <ORT>Koblenz</ORT> 
       <REGION>Rheinland</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
      <ADRESSE_GESCHAEFT> 
       <FIRMA>Muster AG</FIRMA> 
       <STRASSE>Vordemberg 8</STRASSE> 
       <POSTFACH>456</POSTFACH> 
       <POSTLEITZAHL>56098</POSTLEITZAHL> 
       <ORT>Koblenz</ORT> 
       <REGION>Rheinland</REGION> 
       <LAND>Deutschland</LAND> 
       <HOMEPAGE>http://www.musterag.de</HOMEPAGE> 
      </ADRESSE_GESCHAEFT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0521234567</TELEFON_PRIVAT> 
       <TELEFON_GESCHAEFT>0529876543</TELEFON_GESCHAEFT> 
      </TELEFON> 
      <MOBILE>01781234567</MOBILE> 
      <FAX>0526549873</FAX> 
      <EMAIL> 
       <EMAIL_PRIVAT>[email protected]</EMAIL_PRIVAT> 
       <EMAIL_GESCHAEFT>[email protected]</EMAIL_GESCHAEFT> 
      </EMAIL> 
      <HOMEPAGE>http://www.meierspage.de</HOMEPAGE> 
     </KONTAKT> 
    </PERSON> 
    <PERSON KATEGORIE="Privat"> 
     <ANREDE TITEL="Herr"/> 
     <VOLLER_NAME> 
      <NAME>Elmer</NAME> 
      <VORNAME>Rolf</VORNAME> 
      <SPITZNAME>rolfi</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="28.3.1960"/> 
     <BERUF BEZEICHNUNG="Abteilungsleiter"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Dorfstrasse 23</STRASSE> 
       <POSTLEITZAHL>56070</POSTLEITZAHL> 
       <ORT>Koblenz</ORT> 
       <REGION>Rheinland</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
      <ADRESSE_GESCHAEFT> 
       <FIRMA>Visita AG</FIRMA> 
       <STRASSE>Alleestrasse 9</STRASSE> 
       <POSTFACH>325</POSTFACH> 
       <POSTLEITZAHL>56098</POSTLEITZAHL> 
       <ORT>Koblenz</ORT> 
       <REGION>Rheinland</REGION> 
       <LAND>Deutschland</LAND> 
       <HOMEPAGE>http://www.visita.de</HOMEPAGE> 
      </ADRESSE_GESCHAEFT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0523632854</TELEFON_PRIVAT> 
       <TELEFON_GESCHAEFT>0526521771</TELEFON_GESCHAEFT> 
      </TELEFON> 
      <MOBILE>01793698547</MOBILE> 
      <FAX>052652172</FAX> 
      <EMAIL> 
       <EMAIL_PRIVAT>[email protected]</EMAIL_PRIVAT> 
       <EMAIL_GESCHAEFT>[email protected]</EMAIL_GESCHAEFT> 
      </EMAIL> 
     </KONTAKT> 
    </PERSON> 
    <PERSON KATEGORIE="Privat"> 
     <ANREDE TITEL="Herr"/> 
     <VOLLER_NAME> 
      <NAME>Marks</NAME> 
      <VORNAME>Alois</VORNAME> 
      <SPITZNAME>wisi</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="22.12.1958"/> 
     <BERUF BEZEICHNUNG="Versicherungs Agent"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Untere Legi 5</STRASSE> 
       <POSTLEITZAHL>65191</POSTLEITZAHL> 
       <ORT>Wiesbaden</ORT> 
       <REGION>Rheinhessen</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
      <ADRESSE_GESCHAEFT> 
       <FIRMA>Helsana Versicherungen AG</FIRMA> 
       <STRASSE>Bahnhofstrasse 15</STRASSE> 
       <POSTFACH>365</POSTFACH> 
       <POSTLEITZAHL>65191</POSTLEITZAHL> 
       <ORT>Wiesbaden</ORT> 
       <REGION>Rheinhessen</REGION> 
       <LAND>Deutschland</LAND> 
       <HOMEPAGE>http://www.helsana.de</HOMEPAGE> 
      </ADRESSE_GESCHAEFT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0712689665</TELEFON_PRIVAT> 
       <TELEFON_GESCHAEFT>0713265489</TELEFON_GESCHAEFT> 
      </TELEFON> 
      <MOBILE>01796942365</MOBILE> 
      <FAX>01713265480</FAX> 
      <EMAIL> 
       <EMAIL_PRIVAT>[email protected]</EMAIL_PRIVAT> 
       <EMAIL_GESCHAEFT>[email protected]</EMAIL_GESCHAEFT> 
      </EMAIL> 
      <HOMEPAGE>http://www.wisimark.de</HOMEPAGE> 
     </KONTAKT> 
    </PERSON> 
    <PERSON KATEGORIE="Geschäft"> 
     <ANREDE TITEL="Frau"/> 
     <VOLLER_NAME> 
      <NAME>Brunner</NAME> 
      <VORNAME>Beatrix</VORNAME> 
      <MITTELNAME>Katharina</MITTELNAME> 
      <SPITZNAME>rina</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="15.1.1951"/> 
     <BERUF BEZEICHNUNG="Kaufmännische Angestellte"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Dreieck</STRASSE> 
       <POSTLEITZAHL>65187</POSTLEITZAHL> 
       <ORT>Idstein</ORT> 
       <REGION>Rheinhessen</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
      <ADRESSE_GESCHAEFT> 
       <FIRMA>Spitex Verein</FIRMA> 
       <STRASSE>Heimatstrasse 26</STRASSE> 
       <POSTFACH>230</POSTFACH> 
       <POSTLEITZAHL>79085</POSTLEITZAHL> 
       <ORT>Freiburg</ORT> 
       <REGION>Breisgau</REGION> 
       <LAND>Deutschland</LAND> 
       <HOMEPAGE>http://www.spitex-teufen.de</HOMEPAGE> 
      </ADRESSE_GESCHAEFT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0712253269</TELEFON_PRIVAT> 
       <TELEFON_GESCHAEFT>01712253322</TELEFON_GESCHAEFT> 
      </TELEFON> 
      <EMAIL> 
       <EMAIL_GESCHAEFT>[email protected]</EMAIL_GESCHAEFT> 
      </EMAIL> 
     </KONTAKT> 
    </PERSON> 
    <PERSON KATEGORIE="Privat"> 
     <ANREDE TITEL="Frau"/> 
     <VOLLER_NAME> 
      <NAME>Kamm</NAME> 
      <VORNAME>Susanne</VORNAME> 
      <SPITZNAME>susi</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="30.9.1970"/> 
     <BERUF BEZEICHNUNG="Physiotherapeutin"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Gartenweg</STRASSE> 
       <POSTLEITZAHL>33790</POSTLEITZAHL> 
       <ORT>Halle</ORT> 
       <REGION>Westfalen</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
      <ADRESSE_GESCHAEFT> 
       <FIRMA>Physiotherapie Susanne Kamm</FIRMA> 
       <STRASSE>Gartenweg</STRASSE> 
       <POSTLEITZAHL>33790</POSTLEITZAHL> 
       <ORT>Halle</ORT> 
       <REGION>Westfalen</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_GESCHAEFT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0816495512</TELEFON_PRIVAT> 
       <TELEFON_GESCHAEFT>0816495512</TELEFON_GESCHAEFT> 
      </TELEFON> 
      <MOBILE>01794508081</MOBILE> 
      <FAX>0816495512</FAX> 
      <EMAIL> 
       <EMAIL_PRIVAT>[email protected]</EMAIL_PRIVAT> 
       <EMAIL_GESCHAEFT>[email protected]</EMAIL_GESCHAEFT> 
      </EMAIL> 
      <HOMEPAGE>http://www.physiotherapie-kamm.de</HOMEPAGE> 
     </KONTAKT> 
    </PERSON> 
    <PERSON KATEGORIE="Privat" PERSON_ID="6"> 
     <ANREDE TITEL="Herr"/> 
     <VOLLER_NAME> 
      <NAME>Jenny</NAME> 
      <VORNAME>Heinrich</VORNAME> 
      <MITTELNAME>Josef</MITTELNAME> 
      <SPITZNAME>heiri</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="19.3.1933"/> 
     <BERUF BEZEICHNUNG="Rentner"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Tobel</STRASSE> 
       <POSTLEITZAHL>33456</POSTLEITZAHL> 
       <ORT>Bielefeld</ORT> 
       <REGION>Westfalen</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0556436825</TELEFON_PRIVAT> 
      </TELEFON> 
      <EMAIL/> 
     </KONTAKT> 
    </PERSON> 
    <PERSON KATEGORIE="Geschäft" PERSON_ID="7"> 
     <ANREDE TITEL="Herr"/> 
     <VOLLER_NAME> 
      <NAME>Pinkwasser</NAME> 
      <VORNAME>Eduard</VORNAME> 
      <SPITZNAME>edi</SPITZNAME> 
     </VOLLER_NAME> 
     <GEBURTSTAG DATUM="2.7.1940"/> 
     <BERUF BEZEICHNUNG="Künstler"/> 
     <ADRESSE> 
      <ADRESSE_PRIVAT> 
       <STRASSE>Sonnenallee 24</STRASSE> 
       <POSTLEITZAHL>66623</POSTLEITZAHL> 
       <ORT>Mainz</ORT> 
       <REGION>Rheinhessen</REGION> 
       <LAND>Deutschland</LAND> 
      </ADRESSE_PRIVAT> 
      <ADRESSE_GESCHAEFT> 
       <FIRMA>Kunsthaus</FIRMA> 
       <STRASSE>Sonnenallee 1</STRASSE> 
       <POSTFACH>121</POSTFACH> 
       <POSTLEITZAHL>67657</POSTLEITZAHL> 
       <ORT>Rockenhausen</ORT> 
       <REGION>Pfalz</REGION> 
       <LAND>Deutschland</LAND> 
       <HOMEPAGE>http://www.kunst-sevelen.de</HOMEPAGE> 
      </ADRESSE_GESCHAEFT> 
     </ADRESSE> 
     <KONTAKT> 
      <TELEFON> 
       <TELEFON_PRIVAT>0813657895</TELEFON_PRIVAT> 
       <TELEFON_GESCHAEFT>0813659874</TELEFON_GESCHAEFT> 
      </TELEFON> 
      <MOBILE>0178889689</MOBILE> 
      <FAX>0813659870</FAX> 
      <EMAIL> 
       <EMAIL_PRIVAT>[email protected]</EMAIL_PRIVAT> 
       <EMAIL_GESCHAEFT>[email protected]</EMAIL_GESCHAEFT> 
      </EMAIL> 
     </KONTAKT> 
    </PERSON> 
</ADRESSBUCH> 

在這裏,我的XSL文件:

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:output method="html" indent="yes" /> 
    <xsl:template match="/"> 
     <html> 
      <head> 
       <title>Adressbuch</title> 
      </head> 
      <body> 
       <table border="1"> 
        <tr> 
         <th>Nr.</th> 
         <th>Anrede</th> 
         <th>Vorname</th> 
         <th>Name</th> 
         <th>Beruf</th> 
         <th>Tel. Privat</th> 
        </tr> 
        <xsl:apply-templates select="/ADRESSBUCH/PERSON" /> 
       </table> 
      </body> 
     </html> 
    </xsl:template> 

    <xsl:template match="*"> 
     <tr> 
      <td> 
       <xsl:number format="01" value="position()" /> 
      </td> 
      <td> 
       <xsl:value-of select="/ADRESSBUCH/PERSON/ANREDE/@TITEL" /> 
      </td> 
      <td> 
       <xsl:value-of select="/ADRESSBUCH/PERSON/VOLLER_NAME/VORNAME" /> 
      </td> 
      <td> 
       <xsl:value-of select="/ADRESSBUCH/PERSON/VOLLER_NAME/NAME" /> 
      </td> 
      <td> 
       <xsl:value-of select="/ADRESSBUCH/PERSON/BERUF/@BEZEICHNUNG" /> 
      </td> 
      <td> 
       <xsl:value-of select="/ADRESSBUCH/PERSON/KONTAKT/TELEFON/TELEFON_PRIVAT" /> 
      </td> 
     </tr> 
    </xsl:template> 
</xsl:stylesheet> 

這是我的電流輸出:

http://img5.fotos-hochladen.net/uploads/unbenanntw1afuteozp.png

所以應該得到下

第二會看起來像這樣:

02 |杜林|羅爾夫|埃爾默| Abteilungsleiter | 0523632854

+0

請顯示您期望的輸出,以及它與您所得到的不同之處。 –

+0

不需要說「我需要幫助」......您提出問題的事實足以告訴我們, – freefaller

+0

另外,您是否真的認爲您應該在類似這樣的公共網站上放置類似私人信息的內容? – freefaller

回答

2

當你這樣做:

<xsl:value-of select="/ADRESSBUCH/PERSON/ANREDE/@TITEL" /> 

你開始的的 XML輸入並獲取第一個的選定節點之一的值。

因爲在這一點上,你已經是一個PERSON 情況下,你應該使用從那裏相對路徑:

<xsl:value-of select="ANREDE/@TITEL" /> 

等。

-

[1]良好的措施,我會改變:

<xsl:template match="*"> 

到:

<xsl:template match="PERSON"> 

這將使只要沒有什麼區別,你只使用這兩個模板,但是如果你發現你需要添加另一個模板,它將會產生很大的變化。