2017-12-19 14 views
1

Ich habe so etwas wie die folgende XML-Datei. Ich muss den Mitgliedsnamen mit xsl erhalten.XML XSL erhalten Attribut

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="styleSheet.xsl"?> 
<doc> 
    <assembly> 
     <name>AlienRFID2</name> 
    </assembly> 
    <members> 
     <member name="T:nsAlienRFID2.AlienDataDirector"> 
      <summary> 
      EXPERIMENTAL. Objects of this class may be used for sending Alien reader's messages to an external listener. 
      Typical use of this class is by a mobile device, which is listening for Alien reader's notifications using CAlienServer objects and 
      wants to transfer those to a host (target) computer. 
      </summary> 
     </member> 
     <member name="M:nsAlienRFID2.AlienDataDirector.#ctor(System.Int32,System.Net.IPAddress,System.Boolean)"> 
      <summary> 
      Creates instance for connecting to specified host server. 
      </summary> 
      <param name="targetPort">Network port value for connecting to host (target.)</param> 
      <param name="targetIPAddress">IPAddress value for connecting to host (target.)</param> 
      <param name="log">TRUE for turning internal API logging ON, FALSE otherwise.</param> 
     </member> 
    </members> 
</doc> 

Ich brauche das 'T: nsAlientFRID2.Alien ...' auszuspucken und die 'M; nsAlienRFID2.Alien ...' "Elementname" Strings in einem Browser. Ich verstehe es so etwas wie xsl: value-of select = "Mitglied/@ Name", aber ich kann keine Variation davon erhalten, um zu arbeiten. Und ich kann kein klares Beispiel dafür finden, wie man Attribute in Anführungszeichen bekommt. Könnte mir jemand mit einem Beispiel helfen? VIELEN DANK!

bearbeiten ... ich versuche gerade diesen Code, aber es spuckt die Zusammenfassungen aus und nicht das Attribut 'Name'.

<xsl:for-each select = "doc/members/member">    
     <xsl:value-of select = "@name"/>   
</xsl:for-each> 
+0

Wie würden Sie die gewünschte Ausgabe aussehen? – zx485

Antwort

1

können Sie dieses Stylesheet styleSheet.xsl passend zum Element mit dem Namen verwenden und dann der Wert des Attributs immer mit einem xsl:value-of:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="html" omit-xml-declaration="yes" indent="yes"/> 

    <xsl:template match="doc/members/member"> 
    <xsl:value-of select="@name" /><br /> 
    </xsl:template> 

    <!-- suppress other text nodes --> 
    <xsl:template match="text()" /> 

</xsl:stylesheet> 

Dann können Sie das Ausgabeformat, wie Sie möchten.

Ausgang:

T:nsAlienRFID2.AlienDataDirector 
M:nsAlienRFID2.AlienDataDirector.#ctor(System.Int32,System.Net.IPAddress,System.Boolean) 
+0

ty es funktioniert !!!!! – MattBorg