Dies ist das erste Mal, dass ich mit XSLT-Dateien arbeite. Ich habe einen Bericht ändern, um eine XSL-Datei und ich habe folgendes Problem:XSL - Wert der Auswahl mit mehreren Unterknoten, die übereinstimmen
- Ich habe 3 Variablen, die
- Einer dieser Variable rechten XML-Tag übereinstimmen müssen zu identifizieren, in einem Teil definiert Unter-Tag
- Mein Ergebnis ist in dem ersten Unter Tag befindet
Um das richtige Attribut zu wählen, verwende ich den folgenden XSL-Code:
<xsl:for-each select="MSMResults/MSMVarContribs/Contrib">
<xsl:variable name="PrtAsmType"><xsl:value-of select="@PrtAsmType"/></xsl:variable>
<xsl:variable name="CadName"><xsl:value-of select="@PrtAsmCadName"/></xsl:variable>
<xsl:variable name="ContribType"><xsl:value-of select="@Type"/></xsl:variable>
<xsl:variable name="ID"><xsl:value-of select="@ID"/></xsl:variable>
<xsl:value-of select="/CETOLReport/PrtAsm[@Type=$PrtAsmType and @CadName=$CadName and /Feature/SizeDimension/Variable/@ID=$ID]//SizeDimension/@Note"/>
Dies ist die XML-Datei (verkürzt):
<CETOLReport>
<PrtAsm Type="PART" CadName="PRT0001" Name="PRT0001">
<VariationRule>
<Alerts Count="0"/>
<Feature>
...
</Feature>
...
<Feature Note="">
<Alerts Count="0"/>
<SizeDimension Note="PRT001
dim.# 01">
<Tolerance Lower="0.1" Upper="0.2"/>
<VariationRule ControlSkew="TRUE"/>
...
<Variable Note="" Nominal="9" ID="12">
<Distribution Mean="9.149999999999999"/>
<Alerts Count="0"/>
</Variable>
</SizeDimension>
<Dimension>
...
</Dimension>
<Dimension>
...
</Dimension>
</Feature>
<Feature>
...
</Feature>
</PrtAsm>
</CETOLReport>
zusammengefasst:
I
- das Attribut
Type
in<PrtAsm>
- das Attribut
CadName
in<PrtAsm>
passen müssen
- das Attribut
ID
in<PrtAsm/Feature/SizeDimension/Variable>
und als Ausgang möchte ich
- das Attribut
Note
in<PrtAsm/Feature/SizeDimension>
Was habe ich in <xsl:value-of select="/CETOLReport/PrtAsm[@Type=$PrtAsmType and @CadName=$CadName and /Feature/SizeDimension/Variable/@ID=$ID]//SizeDimension/@Note"/>
zu ändern, um die richtige Antwort zu bekommen?
Ist es nur ein Kopierfehler in Ihrer Frage? Sie haben das Tag beim Definieren der Variablen nicht geschlossen. Siehe zum Beispiel: –
Hallo Loic, ja das ist nur ein Kopierfehler. Ich werde es in meiner Frage ändern, danke! –
Bitte nicht "Danke" als Antwort hinzufügen. Stattdessen sollten Sie die Antwort akzeptieren, die Ihr Problem gelöst hat. Wenn Sie genug Reputation haben, können Sie auch [hilfreiche Antworten auflisten] (http://stackoverflow.com/help/privileges/vote-up) oder [Kopfgeld für hilfreiche Antworten vergeben] (http://stackoverflow.com/help /Kopfgeld). –