[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Apr 20 13:28:07 2000 
Subject:lib embedded_xml.p 
From:steve 
Volume-ID:1000420.01 

Hi,

I've been working on an extension to Pop11 that I call Embedded XML.
I include in this message the help file (stripped of VED attributes)
and a uuencoded gzipped, tar archive of all the source code you
need to try it out.

This extension allows you to seamlessly interleave Pop11 and XML.
The combination is really quite powerful.  Using it I am able to
get results in a few minutes where people using Perl/CPAN are
taking weeks.

Although it is not quite polished up, if you are working with XML
I can say with confidence that this is worth trying out.

Steve

----------------------------------------------------------------------

HELP EMBEDDED_XML                                 Steve Leach, Apr '00

lib embedded_xml


          CONTENTS - (Use <ENTER> g to access required sections)

   1   A Simple Example

   2   Detailed Description of the Embedded Syntax
             ... Overview
             ... Typenames and Attribute Names
             ... Attribute Values
             ... Minimized Attributes (Omitted Values)

   3   Limitations and Future Expansion

   4   Notes for Expert Programmers


The embedded XML library allows programmers to employ XML syntax
inside Pop11 programs for building XML elements.  It relies on
LIB * XML and this help file assumes that you are familiar with
that library already, as well as having some knowledge of XML.


-----------------------------------------------------------------------
1  A Simple Example
-----------------------------------------------------------------------

Let us begin with a simple example - turning a a Pop11 list into
an ordered HTML list.  Bearing in mind that XML syntax (unlike HTML)
always requires closing tags we could use lib embedded_xml this
way :-

     define embed_list( L );
         <OL>
             lvars i;
             for i in L do
                 <LI>i</LI>      ;;; XML requires closing brackets
             endfor
         </OL>
     enddefine;

When this code is run, it returns an XML tree with the list elements
inserted in the right places.

     : embed_list( [ cat rat mat hat pat gat fat sat tat vat ] ) ==>
     ** <XmlElement OL []
                       {<XmlElement LI [] {cat}>
                        <XmlElement LI [] {rat}>
                        <XmlElement LI [] {mat}>
                        <XmlElement LI [] {hat}>
                        <XmlElement LI [] {pat}>
                        <XmlElement LI [] {gat}>
                        <XmlElement LI [] {fat}>
                        <XmlElement LI [] {sat}>
                        <XmlElement LI [] {tat}>
                        <XmlElement LI [] {vat}>}>

It is important to understand that the embedded XML returns results.
It does not do any printing - although there are useful printing
routines described in REF * XML.  You can manipulate these data
structures just as you might expect.


-----------------------------------------------------------------------
2  Detailed Description of the Embedded Syntax
-----------------------------------------------------------------------

...  Overview
-------------

This library does exactly one job - it extends the power of the "<"
symbol to recognise XML elements.  Because it is an embedding of
XML into a host language, the syntax is not a perfect duplicate of
XML proper.  (Also, I am still working on how to embed some of the
more obscure aspects.  Contact me for more info steve@watchfield.com.)
This section describes how the embedding works.

An XML element is built from a start tag and an end tag.  The start tag
looks something like this
     <typename name1 = value1 name2 = value2 ... >
and the end tag like this
     </typename>
Start and end tags must be matched properly.  For example, it is not
correct to write
     <I><B> ... </I></B>
in either XML or HTML.  Between the start and end tags arbitrary Pop11
statements can be embedded.

There is a compact form for elements without
children
     <typename name1 = value1 name2 = value2 ... />
which is just the same as writing
     <typename name1 = value1 name2 = value2 ... ></typename>

The embedded syntax uses the Pop11 itemiser to read in each component
of the start and end-tags!  It is an amazing fact that the Pop11
itemiser is compatible enough with XML to do this.  (The only clash
is the way the characters <, >, and / stick together so that sequences
such as <foo></foo> have to be disentangled behind the scenes.)


...  Typenames and Attribute Names
----------------------------------

When reading in the typenames or attribute names, the Pop11 word
itemisation rules are temporarily adapted to permit colons,
periods, and hypens.  This conforms to the rules for valid XML names.
So it is OK to write

     : <foo-long:and.complicated_name/> =>
     ** <XmlElement foo-long:and.complicated_name [] {}>

Exactly the same adaptation is applied to attribute names, of course.


...  Attribute Values
---------------------

Attribute values are more complex because, very often, you would like
to be able to compute the value of an attribute.  So the following
forms are allowed for attribute values: a double quoted string with
XML syntax rules, a Pop11 single-quoted string, an unquoted Pop11
word or number, or a general Pop11 expression enclosed in parentheses.
e.g.

     : <cat name="flossy"/> =>
     ** <XmlElement cat [<Attribute name flossy>] {}>
     : <cat name='rascal'/> =>
     ** <XmlElement cat [<Attribute name rascal>] {}>
     : <cat name=james/> =>
     ** <XmlElement cat [<Attribute name james>] {}>
     : <cat name=("monster"<>"cat")/> =>
     ** <XmlElement cat [<Attribute name monstercat>] {}>


...  Minimized Attributes (Omitted Values)
------------------------------------------

For the convenience of writing code, I have allowed attribute values
to be omitted.  This is sometimes called attribute minimization.
e.g.

     : <img isindex/> =>
     ** <XmlElement img [<Attribute isindex <false>>] {}>

The default value substituted is -false-, as you can see from
the above example.

I spent quite a lot of time worrying about this decision.  It is
technically wrong but I found forbidding minimized attributes too
inconvenient in practice.  So I have compromised and added a
user-defineable hook that allows you to raise warnings or mishaps
when minimization is used.

     embedded_xml_minimization_warning( typename, 1, message )

Initially, this is defined to throw away its arguments.  Simply
assign -warning- or -mishap- to embedded_xml_minimization_warning
to change the behaviour.



-----------------------------------------------------------------------
3  Limitations and Future Expansion
-----------------------------------------------------------------------

The most serious limitation at present is the lack of support for
Unicode.  Please contact me (steve@watchfield.com) if this is an
issue for you.  I do plan to support this at some point in the
future but I will bring my plans forward if required.

The inability to substitute Pop11 expression for typenames and
attribute names is a less irritating limitation.  You can always
work round this issue by dropping into the interface provided
by LIB * XML.  In the next revision of this package I will probably
extend the Pop11 expression syntax used for attribute values for
these names as well.

Lastly, I would also like a more convenient way of inserting Pop11
variables rather than general expressions.  It seems a bit clumsy
to have to write
     <foo bar=(fred)/>
I wonder if a shorthand such as
     <foo bar=^fred/>
would be a good idea?



-----------------------------------------------------------------------
4  Notes for Expert Programmers
-----------------------------------------------------------------------

In order to extend the meaning of "<" I have had to change the meaning
of "<" from an operator to a syntax word.  This kind of change is not
conveniently supported by the Pop11 compiler - which is no criticism
I hasten to add.  To protect backward compatibility, I have therefore
had to perform some rather horrible tricks.

Firstly, any program which uses "nonop <" would have been in for a
nasty surprise.  So lib embedded_xml takes over -nonop- and continues
the masquerade that "<" remains an operator.  Fortunately, nonop is
a very simple syntax word and this is unlikely to cause a problem.

Secondly, any program which uses valof( "<" ) is also apparently
headed for a fall.  And this is a problem that extends to any
procedure that goes through the identifier record of "<".  Well,
this is likely to be bad practice but I can report that it occurs
all over the Poplog development environment.

To fix this second problem is more complicated.  The best that can
be done is for the syntax word implementing "<" to inspect its
run-time environment.  It then guesses whether it is being used as
a syntax word or a procedure and behaves accordingly.  To do this
it inspects -pop_expr_inst- which is a local of -pop_comp_expr_prec-.

What should be done in the future?  My view is that -nonop-
has never been correctly defined.  There are a number of infix
operators that are implemented as syntax words (e.g. -and- and -or-)
but should have meanings under -nonop-.  Since this has no implications
for backwards compatiblity, the only debate here is what the special
cases might be and what the interface to them should be.

[One use that becomes immediately available under this proposal is
inlined function definitions.  For example, it would be simple to
define an inline version of, say +.  It would allow us to write
code such as
     f( 86400 + 1, x )
safe in the knowledge that there is no efficiency penalty.  This is
one of the benefits enjoyed by C programmers for instance.]

Accessing variables via -valof- is always going to create problems
for language evolution.  However, the proposed change to -nonop-
solves it, at least in principle.  The nonop proposal effectively
gives a handful of variables two values: a raw value that is a syntax
word and an ordinary value that is a procedure.  We have to
decide which one -valof- should supply (the ordinary value, I think)
and provide a couple of extra procedures, or optional arguments, for
getting hold of the raw value etc.

I hope these comments have not put you off using lib embedded_xml
too much.  I've been using it for a while now and had no practical
problems.



-------------------------------------------------------------
UUencoded gzip'd tar archive of lib xml
-------------------------------------------------------------

begin 644 xml-dist.tgz
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
3K)_ULW[6SWO^_#_M`G;\`/``````
`
end