XML.orgXML.org
FOCUS AREAS |XML-DEV |XML.org DAILY NEWSLINK |REGISTRY |RESOURCES |ABOUT
OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Re: [xml-dev] An XML API using Java streams

It's also worthwhile to recap Scala's builtin XML API. A few introductory pages:

"XPath-like Queries Against XML Documents in Scala"
http://www.hars.de/2014/02/scala-xpath-like-xml-queries.html
Quote: "Scala comes with a powerful, purely functional xml library, which supports xml matching functionality inspired by XPath. On a first look, it seems to be quite restricted compared to XPath, as you can only query for tag and attribute names, without adding conditions on tag content or attribute values ... But this is misguided: ... "

"Basic Scala XPath searching with \ and \\":
http://alvinalexander.com/scala/basic-xml-xpath-searching-in-scala
Quote: "Use the \ and \\ methods, which are analogous to the XPath / and // expressions."

"Scala: Deeper XML parsing, and extracting XML tag attributes"
http://alvinalexander.com/scala/xml-parsing-xpath-extract-xml-tag-attributes
Quote: "Combine the \ and \\ methods as needed to search the XML."

"How to extract data from XML nodes in Scala"
http://alvinalexander.com/scala/how-to-extract-data-from-xml-nodes-in-scala
Quote: "Use the methods of the Scala Elem and NodeSeq classes to extract the data."



Peter Hunsberger <peter.hunsberger@gmail.com> schrieb am 6:09 Samstag, 24.Juni 2017:


I was going to mention the Scala implementation possibilities, glad to are aware of them. As well as the ability to use your own operators having implicit readers and writers makes Scala a joy for handling this kind of thing. They do require you to define the data model up front (at least the parts you care about) but once you have the classes defined usage becomes pretty trivial. You stop thinking about data formats, just direct usage as needed.

On Thu, Jun 22, 2017 at 8:33 AM Michael Kay <mike@saxonica.com> wrote:

(2) A great challenge - and perhaps a hopeless one - would be to create an expressiveness which could at least be a far cry of what XPath offers. It is strange to say
     N.walk(Axis.child("city")).flatMap(Axis.attribute("name").map(Node::stringValue)
when what you really want to say is
     city/@name


Excellent point. However, dropping into another language does have all sorts of disadvantages: apart from the learning issues, there's the lack of compile-time syntax checking and type checking, the cost of dynamic compilation/interpretation, etc.

One thing to look at, perhaps, is how it translates into Scala, where you can define your own operators:

A.flatMap(B)   -->   A/B

A.attribute(B)  -->   A @ B

etc; and then we start to have something very XPath-like, but with a syntax that's compiled and validated by the host language.

Michael Kay
Saxonica 

--
Peter Hunsberger




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 1993-2007 XML.org. This site is hosted by OASIS