52 lines
1.5 KiB
Plaintext
52 lines
1.5 KiB
Plaintext
Module Checkit {
|
|
declare databank xmldata
|
|
method databank, "NumericCharactersEntities", true
|
|
with databank, "xml" as doc$, "beautify" as beautify
|
|
doc$={<?xml?>
|
|
<Students>
|
|
<Student Name="April" Gender="F" DateOfBirth="1989-01-02" />
|
|
<Student Name="Bob" Gender="M" DateOfBirth="1990-03-04" />
|
|
<Student Name="Chad" Gender="M" DateOfBirth="1991-05-06" />
|
|
<Student Name="Dave" Gender="M" DateOfBirth="1992-07-08">
|
|
<Pet Type="dog" Name="Rover" />
|
|
</Student>
|
|
<Student DateOfBirth="1993-09-10" Gender="F" Name="Émily" />
|
|
</Students>
|
|
}
|
|
beautify=-4
|
|
Report 3, doc$
|
|
Method databank, "GetListByTag", "Student", -1 as Result
|
|
c=1 // Result is type of M2000 stack.
|
|
If len(Result)>0 then
|
|
Stack Result {
|
|
Read fieldsNo : With fieldsNo, "Attr" as fieldsno.tag$()
|
|
}
|
|
Stack Result {
|
|
Print c, " "+fieldsno.tag$("Name")
|
|
c++
|
|
// Loop raise a flag for this block,
|
|
// which interpreter read at the end of block, and then clear it
|
|
if empty else loop
|
|
Read fieldsNo
|
|
}
|
|
// this place hexadecimal value for char É
|
|
// this object offer by default 5 escaped characters: quot, amp, apos, lt, gt
|
|
// inner local function conv$() can be used to escape characters above 127.
|
|
fieldsno.tag$("Name")=@conv$("Émily")
|
|
Report 3, doc$
|
|
end if
|
|
|
|
declare databank Nothing
|
|
Function Conv$(a$)
|
|
if len(a$)=0 then exit function
|
|
local b$, c$, k
|
|
for i=1 to len(a$)
|
|
c$=mid$(a$, i,1)
|
|
k=uint(chrcode(c$))
|
|
if k>127 then b$+="&#x"+hex$(k,2)+";" else b$+=c$
|
|
next
|
|
=b$
|
|
End Function
|
|
}
|
|
CheckIt
|