[Home] [By Thread] [By Date] [Recent Entries]

  • From: "Costello, Roger L." <costello@m...>
  • To: "xml-dev@l..." <xml-dev@l...>
  • 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]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member