2012-03-26 15 views
0

Ich würde gerne wissen, ob es möglich ist, einen Wert mit XLST auszuwählen, wenn ein Wert in einem Knoten gefunden wird. Ich habe keine Erfahrung mit XSLT, aber ich brauche das für einen Prozess in Microsoft BizTalk.XSLT Wert auswählen, wenn Wert im Knoten existiert

So ein Beispiel dafür, was ich tun möchte:

<STF_11_OfficeHomeAddress> 
    <AD_0_StreetAddress>Street 1</AD_0_StreetAddress> 
    <AD_1_OtherDesignation>AD_1_OtherDesignation_0</AD_1_OtherDesignation> 
    <AD_2_City>City 1</AD_2_City> 
    <AD_3_StateOrProvince>Provence 1</AD_3_StateOrProvince> 
    <AD_4_ZipOrPostalCode>ZIP 1</AD_4_ZipOrPostalCode> 
    <AD_5_Country>Country 1</AD_5_Country> 
    <AD_6_AddressType>TYPE 1</AD_6_AddressType> 
    <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 1</AD_7_OtherGeographicDesignation> 
</STF_11_OfficeHomeAddress> 
<STF_11_OfficeHomeAddress> 
    <AD_0_StreetAddress>Street 2</AD_0_StreetAddress> 
    <AD_1_OtherDesignation>OtherDesignation 2</AD_1_OtherDesignation> 
    <AD_2_City>City 2</AD_2_City> 
    <AD_3_StateOrProvince>Province 2</AD_3_StateOrProvince> 
    <AD_4_ZipOrPostalCode>Zip 2</AD_4_ZipOrPostalCode> 
    <AD_5_Country>Country 2</AD_5_Country> 
    <AD_6_AddressType>AddressType 2</AD_6_AddressType> 
    <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 2</AD_7_OtherGeographicDesignation> 
</STF_11_OfficeHomeAddress> 

Wenn Wert <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 2</AD_7_OtherGeographicDesignation> vorhanden ist, wählen <AD_0_StreetAddress>Street 2</AD_0_StreetAddress>. Die einzige Sache ist, die Reihenfolge ist nicht immer die gleiche und Knoten <STF_11_OfficeHomeAddress> kann 11 Mal in der gleichen Datei auftreten.

Kann mir bitte jemand helfen?

Antwort

2
//STF_11_OfficeHomeAddress[ 
    AD_7_OtherGeographicDesignation = 'OtherGeographicDesignation 2' 
]/AD_0_StreetAddress 

Lautet wie

  • jede Office/Home-Adresse ... (//STF_11_OfficeHomeAddress)
  • ... das hat seine andere geografische Bezeichnung auf einem bestimmten Wert ... ([AD_7_OtherGeographicDesignation = 'OtherGeographicDesignation 2'])
  • ... wählen Sie die Straße Adresse. (/AD_0_StreetAddress)
+0

groß danke! – user1292411

1

Go durch zumindest die grundlegenden Abschnitt Jeni Tennison's XSLT tutorial pages ersten, werden Sie dann in der Lage sein, dies zu tun, um sich von Push-Modus tun (statt Pull-Modus) und mit einem Prädikat mit dem Matching-Regel wie :

<xsl:template match="AD_0_StreetAddress[../AD_7_OtherGeographicDesignation]"> 
    <xsl:value-of select="."/> 
+0

+1 für den Tipp, obwohl der Match-Ausdruck für die OPs immer noch etwas anders sein würde. – Tomalak

+0

danke für die Tutorial-Seiten, ich werde sie überprüfen ... – user1292411