Match-Attribut auf XSLT, anstatt das ganze element matching

Ich schreiben möchte eine XSL-Vorlage entspricht, Attribute anstelle von Knoten,

Ich würde denken, dass so etwas wie dieses:

<xsl:template match="@href | @conref | @conrefend">
    <xsl:message select="."/>
</xsl:template>

wäre mit einem von denen 3 Attribut-Namen und-print auf der Konsole der Wert des Attributs, wie der Umfang ist das Attribut selbst und nicht einen Knoten.

Aber mein Test hat mich eines besseren belehrt und ich bin nur in der Lage, mit Knoten, die enthalten alle diese Attribute so:

 <xsl:template match="*[@href or @conref or @conrefend]">
   <xsl:message select="if(not(@href)) 
                        then    
                          if(not(@conref)) 
                          then @conrefend 
                          else @conref 
                        else @href"/>  
   </xsl:template>

Das problem bei diesem Ansatz ist, dass, wenn es existiert ein Knoten, der mehr als eines dieser Attribute, dann wird nur eine verarbeitet und ich brauche alle zu verarbeiten.

Irgendwelche Ideen, warum der erste Ansatz nicht funktioniert?

EDIT1:
Vollständige xslt:

  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      exclude-result-prefixes="xs"
      version="2.0">

     <xsl:output omit-xml-declaration="yes" indent="yes"/>
     <xsl:strip-space elements="*"/>             
     <xsl:template match="@conref|@conrefend|@href">
        <xsl:message select="."/>
     </xsl:template>
   </xsl:stylesheet>

Test-XML:

  <links>
      <image conref="COPY-GUID/*+-862416}39-37CD-4CF7-A7AA-F09F4A763944" />
   </links>

Jetzt die XSLT-Datei wird nicht passen alles.

InformationsquelleAutor rovinos | 2015-02-03

Schreibe einen Kommentar