XPathQueryProcess Elemanı

Top  Previous  Next

XPathQueryProcess elemanı bir XML metnini veya ayıklama ile elde edilmiş bir Node nesnesine sorgulamak için kullanılır. Bir taşıyıcı işlem olduğu için bu elemanın altında alt işlemler konfigüre edilebilir ve sorgulama sonucunda bulunmuş olan düğümler için çalıştırılabilirler.

XPathQueryProcess

 

Özellikler

Xml Girdi (MScript Kabul Eder)

XML metni veya ayıklanmış bir Node girdi olarak verilebilir. MScript fonksiyonu parsexml() XML metinlerini ayıklayarak Node nesnelerine çevirebilir.

Kodlama (MScript Kabul Eder)

XML girdinin karakter kodlaması. Atama yapılmamış ise varsayılan değer "UTF-8" olarak kabul edilir.

XPath İfadesi (MScript Kabul Eder)

Sorgulamayı yapacak olan XPath ifadesi. Bu ifade ile yapılan sorgu NodeList döndürmelidir;  metin veya boolean değil.

Çıktı Alanlar (MScript Kabul Eder)

Çıktı alanları ve XPath eşleme tanımları. Tanımlar birbirlerinden virgüller ile ayrılmalıdır.

Bir tanımın söz dizimi söyledir:

alan-adıgöreceli-xpath-ifadesi

 

alan-adı

Çıktı alanının adı.

 

göreceli-xpath-ifadesi

XPath ifadesi sorgudan dönen düğümlere göreceli olarak verilebilir. İfadeler Metin, Boolean veya Node döndürebilir. Eğer bir ifade Node döndürecek ise o zaman alan adının sonuna "*" karakteri eklenmelidir

 

Örnek:

 

XML Girdisi:

<root>

  <order>

    <customerId>188</customerId>

    <orderDate>2009-05-25</orderDate>

    <product id="7899" qty="100" price="35" />

  </order>

  <order>

    <customerId>200</customerId>

    <orderDate>2009-08-11</orderDate>

    <product id="09182" qty="10" price="1200" />

    <product id="FD541" qty="3" price="450" />

    <product id="P0912" qty="50" price="100" />

  </order>

</root>

 

 

XPath İfadesi:
//order[customerId = 200]

 

Çıktı Alanları:

STATUS: orderDate, PRODCNT: count(product), PRODS*: product

Örnekte "PRODS" alanı bir Node nesnesi içerecektir. Bu alanın değeri daha sonra alt işlem olarak konfigüre edilmiş bir başka XPathQueryProcess tarafından veya MScript fonksiyonu xpath() tarafından tekrar sorgulanabilir.

XPath İfadesi ve Çıktı Alanlarınde önek (prefix) kullanımı

 

XML Girdisi:

 
<root>

  <cns:customer id="1" xmlns:cns="http://www.localhost.com/customer">        

    <ons:order xmlns:ons="http://www.localhost.com/order">

      <ons:orderNumber>21354</ons:orderNumber>

    </ons:order>

  </cns:customer>

  <cns2:customer id="2" xmlns:cns2="http://www.localhost.com/customer2">        

    <ons:order xmlns:ons="http://www.localhost.com/order">

      <ons:orderNumber>74544</ons:orderNumber>

    </ons:order>

  </cns2:customer>

</root>

 

 

XPath İfadesi:
/root/cns2:customer[@id = 2]/ons:order

 
Çıktı Alanları:

ONUM: ons:orderNumber

 

Önek (prefix) kullanmamak

Yukarıdaki örnek için, önek kullanılmadan da bir XPath ifadesi oluşturabilir. Bu durumda önekler dikkate alınmadığından tüm "customer" düğümleri (node) sonuç kümesinde yer alacaktır.

 

XPath İfadesi:
/root/customer[@id = 2]/order

Çıktı Alanları:

ONUM: orderNumber

 

Varsayılan aduzayı

Eğer bir XML verisi içinde varsayılan aduzayı mevcut ise XPath ifadesinde varsayılan aduzayı kullanan düğümleri adreslemek için önek olarak sadece ":" kullanmak yeterli olacaktır.

 

XML Girdisi:

<root>

  <cns:customer xmlns:cns="http://www.localhost.com/customer">        

    <order xmlns="http://www.localhost.com/order">

      <orderNumber>21354</orderNumber>

    </order>

  </cns:customer>

  <cns2:customer xmlns:cns2="http://www.localhost.com/customer2">        

    <order xmlns="http://www.localhost.com/order">

      <orderNumber>21354</orderNumber>

    </order>

  </cns2:customer>

</root>

 

 

XPath İfadesi:
//cns2:customer/:order

 
Çıktı Alanları:

ONUM: ./:orderNumber

 

Çıktı Alanları'nda :orderNumber öncesinde "./" kullanımına dikkat edin. Bir XPath ifadesi ":" karakteri ile başlayamadığı için öncesine "./" karakterleri yerleştirilmiştir.