[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Your XML document is a programming language
- From: "Costello, Roger L." <costello@mitre.org>
- To: "xml-dev@lists.xml.org" <xml-dev@lists.xml.org>
- Date: Mon, 9 Sep 2013 11:59:09 +0000
Hi Folks,
This is a programming language:
<Book>
<Title>____</Title>
<Author>____</Author>
</Book>
Don't let the angle brackets and element names deceive you, it is a programming language.
When I execute this program
<Book>
<Title>Six Great Ideas</Title>
<Author>Mortimer Adler</Author>
</Book>
I get this output
Six Great Ideas
Mortimer Adler
As with most programming languages, it is possible to write a program that loops forever. This program loops forever
<Book>
<Title>Six Great Ideas</Title>
<Author></Author>
</Book>
You probably figured out that in this programming language the semantics of the <Author> element is
1. interpret(Author[not(empty())]) --> Output: text
2. interpret(Author[empty()]) --> interpret(self::*)
Here is an interpreter for the programming language
---------------------------------------------------------------------
Book Language Interpreter
(interpreter is implemented in XSLT)
---------------------------------------------------------------------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="text" />
<xsl:template match="text()">
<xsl:value-of select="." />
</xsl:template>
<xsl:template match="Author[. eq '']">
<xsl:apply-templates select="self::*"/>
</xsl:template>
</xsl:stylesheet>
Comments?
/Roger
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]