2016-06-02 16 views
0

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

  1. Ich habe 3 Variablen, die
  2. Einer dieser Variable rechten XML-Tag übereinstimmen müssen zu identifizieren, in einem Teil definiert Unter-Tag
  3. Mein Ergebnis ist in dem ersten Unter Tag
  4. 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&#xa;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?

+0

Ist es nur ein Kopierfehler in Ihrer Frage? Sie haben das Tag beim Definieren der Variablen nicht geschlossen. Siehe zum Beispiel:

+0

Hallo Loic, ja das ist nur ein Kopierfehler. Ich werde es in meiner Frage ändern, danke! –

+0

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). –

Antwort

0

Ich würde versuchen:

<xsl:value-of select="/CETOLReport/PrtAsm[@Type=$PrtAsmType and @CadName=$CadName and Feature/SizeDimension/Variable/@ID=$ID]/Feature/SizeDimension[1]/@Note"/> 
+0

Hi Loic, danke für deinen Vorschlag, aber die Korrektur von "//" zu "/" brachte nicht die gewünschte Ausgabe. –

+0

hast du auch das '/' vor 'Feature' entfernt? –

0

Try this ....

<xsl:value-of select="/CETOLReport 
         /PrtAsm[@Type=$PrtAsmType and @CadName=$CadName] 
         /Feature/SizeDimension[Variable/@ID=$ID]/@Note"/> 
Verwandte Themen