Ho un file XML che assomiglia a questo esempio:XSLT ordinamento e raggruppamento che coinvolgono gli attributi
<Data>
<defect>
<record-id>1</record-id>
<custom-field-value field-name="Release Version" field-value="1.0"/>
<custom-field-value field-name="Other info" field-value=""/>
<custom-field-value field-name="More info" field-value="blah"/>
<event include-in-release-notes="yes">
<notes>This is a release note to include</notes>
</event>
<event include-in-release-notes="no">
<notes>This is not a release note</notes>
</event>
</defect>
<defect>
<record-id>2</record-id>
<custom-field-value field-name="Release Version" field-value="1.5"/>
<custom-field-value field-name="Other info" field-value=""/>
<custom-field-value field-name="More info" field-value="blah"/>
<event include-in-release-notes="yes">
<notes>This is a release note to include for 1.5</notes>
</event>
<event include-in-release-notes="no">
<notes>This is not a release note</notes>
</event>
</defect>
</Data>
Quello che sto cercando di fare è creare un note di rilascio che documentano primi tipi e trova tutte le uniche @ valori del valore di campo degli elementi che hanno il @ nome-campo uguale a "Versione di rilascio". Potrebbero esserci altri elementi che non riguardano la versione di rilascio. Ecco l'output che sto cercando:
Release Version: 1.0
o This is a release note to include
Release Version: 1.5
o This is a release note to include for 1.5
Release Verison: x.x
o one release note
o another release note
Ho letto un mucchio sul metodo "Muenchian" e ordinamento e raggruppamento, ma sto lottando con il fatto che io ho gli attributi che devo Paragonare a. La maggior parte degli esempi che ho letto discutono l'ordinamento su elementi che sembrano molto più intuitivi. E ho bisogno di trovare e ordinare su più attributi, beh, la mia testa inizia a esplodere.
mi è venuta in mente fogli di stile che mi darà tutti gli elementi che hanno "Release Version" come il testo utilizzando:
<xsl:key name="keyMajorReleases" match="custom-field-value" use="@field-name"/>
<xsl:for-each select=key('keyMajorReleases', 'Release Version')">
<xsl:sort order="descending" data-type="text" select="@field-value"/>
Ma che li dà a me, non solo quelli unici . E poi non ho capito come ottenere l'elemento 'evento' che ha la nota di rilascio che ho bisogno di stampare.
Quando ho provato ad usare 'generate-id()', ho solo un risultato, come immagino che ci sia solo una voce unica, con il mio valore di trovare:
<xsl:for-each select="//custom-field-value[generate-id(.)=generate-id(key('keyMajorReleases', 'Release Version')[1])]">
Tim, grazie per il tuo aiuto! Non ero a conoscenza di quella sintassi nella "chiave" e nella "selezione" per specificare un attributo specifico uguale a un valore. Questo ha funzionato, grazie ancora! – Gunn