XML/Input: Difference between revisions
Content added Content deleted
(PascalABC.NET) |
(Added OmniMark solution) |
||
Line 2,788: | Line 2,788: | ||
parse p xml_str; |
parse p xml_str; |
||
final p;</syntaxhighlight> |
final p;</syntaxhighlight> |
||
=={{header|OmniMark}}== |
|||
OmniMark′s pedigree was SGML processing. XML processing uses similar principles, with the OmniMark script taking two input files: first, a DTD defining the structure, and second, the XML data. |
|||
''The DTD'' — '''XML-input.dtd''' |
|||
<syntaxhighlight lang="dtd"> |
|||
<!DOCTYPE Students [ |
|||
<!ELEMENT Students (Student)+ > |
|||
<!ELEMENT Student (Pet)* > |
|||
<!ATTLIST Student |
|||
Name CDATA #REQUIRED |
|||
Gender CDATA #REQUIRED |
|||
DateOfBirth CDATA #REQUIRED > |
|||
<!ELEMENT Pet EMPTY > |
|||
<!ATTLIST Pet |
|||
Type CDATA #REQUIRED |
|||
Name CDATA #REQUIRED > |
|||
]></syntaxhighlight> |
|||
''The XML'' — '''XML-input.xml''' |
|||
<syntaxhighlight lang="dtd"> |
|||
<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> |
|||
</syntaxhighlight> |
|||
''The OmniMark script'' — '''XML-input.xom''' |
|||
<syntaxhighlight lang="omnimark"> |
|||
process |
|||
local stream students-dtd initial {file 'XML-input.dtd'} |
|||
local stream students-xml initial {file 'XML-input.xml'} |
|||
do xml-parse document |
|||
scan students-dtd || students-xml |
|||
output "%c" |
|||
done |
|||
element Student |
|||
output "%v(Name)%n" |
|||
suppress |
|||
element #implied ; all other elements can be suppressed, except <Students> |
|||
output '%c' when element is Students |
|||
suppress when element isnt Students |
|||
</syntaxhighlight> |
|||
''The commandline'' |
|||
<pre> |
|||
omnimark.exe -sb XML-input.xom -of XML-input.out.txt |
|||
</pre> |
|||
''The output'' — '''XML-input.out.txt''' |
|||
<pre> |
|||
April |
|||
Bob |
|||
Chad |
|||
Dave |
|||
Émily |
|||
</pre> |
|||
=={{header|OpenEdge ABL/Progress 4GL}}== |
=={{header|OpenEdge ABL/Progress 4GL}}== |