Announcement

Collapse
No announcement yet.

eigene Funktion definieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • eigene Funktion definieren

    Hallo zusammen,

    ich will versuchen meine (erste) eigene Funktion in XQuery zu schreiben und habe da ein paar Fragen. Die Funktion soll einfach herausfinden, ob ein Element Parent-Knoten hat oder nicht und das Element oder den Knoten zurückgeben.

    Ich habe solche Fälle, die durchsucht werden:

    Code:
     <head xsf:segment="seg50" xml:id="terms_i6">
                      <term xsf:segment="seg56"/>
                   </head>
     <head xsf:segment="seg57" xml:id="terms_i7">
                      <term xsf:segment="seg62"/>
                      <term xsf:segment="seg66">
                         <term xsf:segment="seg67"/>
                         <term xsf:segment="seg70"/>
                      </term>
                   </head>
     <head xsf:segment="seg204" xml:id="terms_i19">
                      <term xsf:segment="seg210"/>
                      <term xsf:segment="seg218"/>
                   </head>
    Die Funktion soll als Eingabeparameter ein term-Element bekommen und hier ist mein Problem, als Ausgabeparameter kann entweder nur ein Term ausgegeben werden, wie in dem Beispiel
    Code:
    <head xsf:segment="seg50" xml:id="terms_i6">
                      <term xsf:segment="seg56"/>
                   </head>
    oder aber auch zwei wie hier
    Code:
     <head xsf:segment="seg204" xml:id="terms_i19">
                      <term xsf:segment="seg210"/>
                      <term xsf:segment="seg218"/>
                   </head>
    oder ein gesamter Knoten wie hier:
    Code:
    <head xsf:segment="seg57" xml:id="terms_i7">
                      <term xsf:segment="seg62"/>
                      <term xsf:segment="seg66">
                         <term xsf:segment="seg67"/>
                         <term xsf:segment="seg70"/>
                      </term>
                   </head>
    Ich habe angefangen die Funktion zu schreiben:
    declare function my:hasparent($node as node()) as ??? {
    if ($node/..)
    then ($node/..)
    else ($node)
    };

    Kann mir jemand bitte einen hilfreichen Tipp geben? Danke euch schon mal!
    Zuletzt editiert von lingua; 16.03.2011, 11:06.

  • #2
    Für "as ???" willst du vermutlich einfach "as node()" oder "as element()".

    Comment


    • #3
      Hi Martin, guter Hinweis. Es sollte als node() sein. Jetzt habe ich mich was eingelesen und es hat ja auch geklappt! Danke!

      Comment

      Working...
      X