Freigeben über


So bearbeiten Sie die XPath-Auswahl, um mehrere Datensätze zu verarbeiten

Separate untergeordnete TypedXmlDocuments werden erstellt, wenn ein TypedXmlDocument im Modul bestätigt wird; siehe "Assert". Die Engine bestimmt, welche Kind-TypedXmlDocuments basierend auf den in den Regeln definierten XPath-Selektoren erstellt werden sollen. Wenn Sie Regeln im Composer erstellen, wird der XPath-Selector-Wert standardmäßig auf den Knoten oberhalb des Knotens festgelegt, der auf der Registerkarte "XML-Schemas" im Fakten-Explorer ausgewählt ist. Der XPath-Feldwert ist standardmäßig auf den ausgewählten Knoten selbst, relativ zum übergeordneten Knoten, festgelegt.

In einigen Fällen möchten Sie möglicherweise den XPath-Standard anpassen, den der Composer beim Erstellen von Regeln erstellt. Gehen Sie davon aus, dass das folgende XML-Beispieldokument verwendet wird.

<Order>  
   <Orderline>  
      <Hat style="Baseball">                        
         <Cost>10</Cost>  
      </Hat>  
      <Shirt color="Black">  
         <Cost>20</Cost>  
      </Shirt>  
      <Total></Total>  
   </Orderline>  
   <Orderline>  
      <Hat style="Bowler">                        
         <Cost>20</Cost>  
      </Hat>  
      <Shirt color="Red">  
         <Cost>20</Cost>  
      </Shirt>  
      <Total></Total>  
   </Orderline>  
</Order>  

Angenommen, Sie möchten eine Regel erstellen, die den Gesamtwert für jede Bestelllinie berechnet. Ihre Regel würde wie folgt aussehen.

WENN 1==1

DANN /Order/Orderline/Total = (/Order/Orderline/Hat/Cost + /Order/Orderline/Shirt/Cost)

Der fett formatierte Teil der XPaths gibt den Selector-Teil an, und der Rest stellt den Field XPath dar. Dies sind die Standardwerte, die vom Composer erstellt wurden. Wenn Sie diese Richtlinie ausführen, würde dies jedoch zur Erstellung von 6 Objekten führen– 2 Orderline-Objekte, 2 Hat-Objekte und 2 Shirt-Objekte. Die Bestellliniensummen wurden für jede Kombination von Hut- und Shirt-Objekten berechnet. Diese Summen wurden immer auf denselben Wert festgelegt, der sich aus der letzten Ausführung der Regel ergab. Die Regel würde 8 Mal ausgelöst. Dies ist nicht beabsichtigt in diesem Szenario.

Eine Lösung wäre das Bearbeiten der XPath-Werte wie folgt.

WENN 1==1

DANN /Order/Orderline/Total = (/Order/Orderline/Hat/Cost + /Order/Orderline/Shirt/Cost)

Die Selector-XPath-Werte für alle drei Felder wurden auf denselben /Order/Orderline-Wert festgelegt, und die Feld-XPath-Werte wurden entsprechend bearbeitet. Dies geschieht durch Ändern der XPath-Selektor- und XPath-Feldwerte im Eigenschaftenfenster, wenn ein Knoten auf der Registerkarte "XML-Schemas" ausgewählt ist. Dies sollte vor dem Ziehen des Felds in ein Regelargument erfolgen.

Wenn Sie die Richtlinie mit dieser Änderung ausführen, würde dies dazu führen, dass der Gesamtwert für jede Bestelllinie basierend auf den Kostenwerten der Knoten "Shirt" und "Hat" innerhalb dieser Bestelllinie korrekt berechnet wird.