Ana içeriğe geç

İlkel işlemleri yeniden ele alma

düğümleri silme

Sözdizimi:

1
delete node location
1
delete nodes location 

İfade location silinmek üzere işaretlenmiş düğümlerden oluşan bir diziyi temsil eder (gerçek düğüm sayısının node veya nodes).

düğümleri ekleme

Sözdizimi:

1
insert (node|nodes) items into path
1
insert (node|nodes) items as first into Path
1
insert (node|nodes) items as last into Path
1
insert (node|nodes) items before Path
1
insert (node|nodes) items after Path
1
The expression *Path* must point to a single target node.

İfade items hedef düğüme göre eklenecek öğelerden oluşan bir dizi üretmelidir.

Anahtar sözcük node veya nodes kullanılsa da eklenen öğelerin düğüm olmayan öğeler olabileceğini unutmayın. Gerçekte olan, düğüm olmayan öğelerin dize değerlerinin birleştirilerek metin düğümleri oluşturmasıdır.

  • Herhangi bir into biçimi kullanılırsa hedef düğüm bir öğe veya belge olmalıdır. Eklenecek öğeler, bir öğe oluşturucunun içeriğiyle tamamen aynı şekilde işlenir.

Örneğin, eğer $target boş bir öğeyi gösteriyorsa <CONT/>,

1
2
insert nodes (attribute A { 5.4 }, <child1/>, "text", 2 to 4) 
into $target
1
yields:
1
<CONT A="5.4"><child1/>text 2 3 4</CONT>

Bu nedenle oluşturuculardaki kuralların aynısı geçerlidir: öğe sırası korunur, ardışık düğüm olmayan öğelerin arasına boşluk eklenir, eklenen düğümler önce kopyalanır, öznitelik düğümlerinden sonra başka öğe türlerine izin verilmez vb.

  • Anahtar sözcükler as first (sırasıyla as last) kullanıldığında, öğeler öğenin mevcut alt öğelerinden önce (sırasıyla sonra) eklenir.

Örneğin, eğer $target bir öğeyi gösteriyorsa <parent><kid/></parent>

1
insert node <elder/> as first into $target

şunu verir:

1
<parent><elder/><kid/></parent>

Yalnızca into anahtar sözcüğü kullanıldığında, ortaya çıkan konum uygulamaya bağlıdır. Yalnızca şu garanti edilir: as first into ve as last into şuna göre önceliklidir: into.

  • Eğer before veya after kullanılırsa, hedef düğüm için herhangi bir düğüm türüne izin verilir.

  • Öznitelikler özel bir durumdur: kullanılan before veya after anahtar sözcüğünden bağımsız olarak öznitelikler her zaman into hedefin üst öğesine eklenir. Eklenen özniteliklerin sırası belirtilmemiştir. Ad çakışmaları hatalara yol açabilir.

düğümü değiştir

Sözdizimi:

1
replace node location with items

İfade location tek bir hedef düğümü göstermelidir.

İfade items hedef düğümün yerine geçecek öğelerden oluşan bir dizi üretmelidir.

  • Şu düğüm türleri document ve attribute hariç, hedef düğüm herhangi bir öğe dizisiyle değiştirilebilir. Yerine geçecek öğeler, bir element/document oluşturucunun içeriğiyle tam olarak aynı şekilde ele alınır.

Örneğin, eğer $target bir öğeyi gösteriyorsa <P><kid/>some text</P>,

1
replace node $target/kid with "here is" 

şunu verir:

1
<P>here is some text</P>
  • Öznitelikler özel bir durumdur: yalnızca bir öznitelik düğümüyle değiştirilebilirler. Ad çakışmaları hatalara yol açabilir.

düğümün değerini değiştir

Sözdizimi:

1
replace value of node location with items

Burada hedef düğümün kimliği korunur. Yalnızca değeri veya içeriği (bir öğe ya da belge için) değiştirilir.

  • Hedef bir öğe veya belge düğümüyse, önceki tüm alt düğümleri kaldırılır ve yerlerine yenileri konur. Yerine geçecek öğeler, bir metin oluşturucunun içeriğiyle tam olarak aynı şekilde ele alınır (böylece tüm düğüm öğeleri dize değerleriyle değiştirilir).

Örneğin, eğer $target bir öğeyi gösteriyorsa <P><kid/>some text</P>,

1
replace value of node $target with (<text>let's count: </text>, 1 to 3, "...") 
1
yields:
1
<P>let's count: 1 2 3 ...</P>
1
Böylece öğenin içeriği bir *metin düğümüyle* değiştirilir; bu düğümün değeri, yerine geçen öğelerin dize değerlerinin birleştirilmesidir.
  • Hedef düğüm bir yaprak düğümse (öznitelik, metin, yorum veya işleme talimatı), dize değeri yerine geçen öğelerin dize değerlerinin birleştirilmesiyle değiştirilir.

Örneğin, eğer $target bir öğeyi gösteriyorsa <P order="old">some text</P>,

1
replace value of node $target/@order with (1 to 3, <ell>...</ell>) 

şunu verir:

1
<P order="1 2 3...">some text</P>

düğümü yeniden adlandır

Sözdizimi:

1
rename node location as name-expression

İfade location tek bir hedef öğeyi, özniteliği veya işleme talimatını göstermelidir.

İfade name-expression tek bir QName veya dize öğesi üretmelidir.

Örneğin, eğer $target bir öğeyi gösteriyorsa <CONT B="b">some text</CONT>

1
2
rename node $target as qName("some.namespace", "CONTAINER"),
rename node $target/B as "NEWB"

şunu verir:

1
<ns1:CONTAINER NEWB="b" xmlns:ns1="some.namespace">some text</ns1:CONTAINER>

**

transform**

Sözdizimi:

1
2
3
copy $var := node [, $var2 := node2 ...] 
modify updating-expression 
return expression

Her node ifade kopyalanır (en azından sanal olarak) ve bir değişkene bağlanır.

İfade updating-expression bir veya daha fazla güncelleme temel işlemi içerir ya da bunları çağırır. Bu işlemlerin yalnızca bağlı değişkenlerin gösterdiği kopyalanmış XML ağaçları üzerinde çalışmasınaizin verilir. Bu nedenle dönüştürme ifadesinin yan etkisi yoktur.

İfade return değerlendirilmeden önce tüm güncellemeler kopyalanmış ağaçlara uygulanır. Genellikle return ifade, bağlı bir değişken veya bağlı değişkenleri içeren bir düğüm oluşturucusu olur ve böylece güncellenmiş ağacı/ağaçları üretir.

Örneğin, eğer $target bir öğeyi gösteriyorsa

1
2
3
4
5
6
copy $target := <CONT id="001">some text</CONT>
modify (
   rename node $target as "SECTION",
   insert node <TITLE>The title</TITLE> as first into $target
)
return element DOC { $target }

şunu döndürür:

1
<DOC><SECTION id="001"><TITLE>The title</TITLE>some text</SECTION></DOC>