|
|
!$elementnode.attributes = hash of dnodes
!$attributenode.specified = boolean
true if the attribute received its value explicitly in the XML document,
or if a value was assigned programatically with the setValue function.
false if the attribute value came from the default value declared in the document's DTD.
!$pinode.target = target of this processing instruction
XML defines this as being the first token following the markup
that begins the processing instruction.
XPath:
!^node.select[xpath/query/expression] = hash of 0->node0 1->node1
!^node.select-single[xpath/query/expression] = first node if any
@main[]
^xslt[]
OK
@xslt[]
$dom[^dom::set{<?xml version="1.0" encoding="windows-1251"?>
<people>
<man id="1">
<name>PAF</name>
</man>
<man id="2">
<name>دبش</name>
</man>
</people>
}]
#^show-dnode1[$dom]<hr>
#^show-dnode2[$dom]<hr>
$people[^dom.select[*/man]]
#^show1[]
^show-dnodes1[$people]<hr>
#^people.0.owner.hren[]
#^show-dnode1[^dom.select-single[*/man];0;1]<hr>
@show1[]
^for[i](0;^people._count[]-1){
$node[$people.$i]
$node.first-child.value:
$pattributes[$node.parent.attributes]
^if(^pattributes._count[]){
$pattributes.id.name=$pattributes.id.value
}
<br>
}
<hr>
@show-dnodes1[array][i]
^for[i](0;^array._count[]-1){
^show-dnode1[$array.$i;0;1]
}
@show-dnode1[dnode;level;single][l]
^if(def $dnode){
^for[l](0;$level-1){ ^; ^; ^; ^;}
^if($dnode.type eq element){
<^;$dnode.name
$pairs[$dnode.attributes]
^if(def $pairs){
$names[^pairs._keys[]]
^names.menu{$names.key=$pairs.[$names.key].value }
}
>^;
}{
$dnode.name
}
^if(def $dnode.value){$dnode.value}<br>
^show-dnode1[$dnode.first-child]($level+1)
^if(!$single){
^show-dnode1[$dnode.next-sibling]($level)
}
^if($dnode.type eq element){
^for[l](0;$level-1){ ^; ^; ^; ^;}<^;/$dnode.name>^;<br>
}
}