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şaretlenen düğüm dizisini temsil eder (gerçek düğüm sayısının anahtar sözcükle eşleşmesi gerekmez: 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 kullanılsa da node veya nodes 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şturulmasıdır.

  • Herhangi bir biçimi into kullanılırsa hedef düğüm bir öğe veya belge olmalıdır. Eklenecek öğeler, bir öğe kurucusunun 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 durumda kurucularla aynı kurallar geçerlidir: öğe sırası korunur, art arda gelen 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 üretir:

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

Yalnızca into anahtar sözcüğü kullanıldığında, elde edilen konum uygulamaya bağlıdır. Yalnızca şu ifadelerin as first into ve as last into ifadesine göre öncelikli olduğu garanti edilir: into.

  • Eğer before veya after kullanılırsa, hedef düğüm herhangi bir düğüm türünde olabilir.

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


Düğümü değiştirme

Sözdizimi:

1
replace node location with items

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

İfade items hedef düğümün yerini alacak öğelerden oluşan bir dizi döndürmelidir.

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

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

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

şunu üretir:

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 değerini değiştirme

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 alt düğümlerinin tümü kaldırılır ve yerlerine yenileri konur. Yerine konan öğeler, bir metin oluşturucunun içeriğiyle tam olarak aynı şekilde ele alınır (dolayısıyla tüm düğüm öğeleri dize değerleriyle değiştirilir).

Örneğin, $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
öğe içeriği, değeri yerine konan öğelerin dize değerlerinin birleştirilmesi olan *bir metin düğümüyle* değiştirilir.
  • Hedef düğüm bir yaprak düğümse (öznitelik, metin, yorum veya işleme yönergesi), dize değeri yerine konan öğelerin dize değerlerinin birleştirilmesiyle değiştirilir.

Örneğin, $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 üretir:

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

Düğümü yeniden adlandırma

Sözdizimi:

1
rename node location as name-expression

İfade location tek bir hedef öğeyi, öznitelik düğümünü veya işleme yönergesini göstermelidir.

İfade name-expression tek bir QName veya dize öğesi döndürmelidir.

Örneğin, $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 üretir:

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

**

dönüştür**

Sözdizimi:

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

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

İfade updating-expression bir veya birkaç güncelleme ilkelini içerir ya da çağırır. Bu ilkellerin yalnızca kopyalanmış XML ağaçları üzerinde işlem yapmasına izin verilir; bu ağaçlar bağlı değişkenler tarafından gösterilir. Dolayısıyla 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; böylece güncellenmiş ağaçları döndürür.

Örneğin, $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>