[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

More information on REXML/XPath

Peter Bailey

9/25/2007 12:16:00 PM

Hello,
I'm trying to convert xml files to SGML. The publishing system at our
company uses SGML. And, basically, the SGML I want to create is just
CALS, which is the SGML tables standard. So, I'm trying to use REXML to
parse the XML and delineate all of the necessary elements that need to
be converted. And, I need to do some gathering and sorting. My client,
an editor in my company, wants to pick the first from the list of a
series of elements and use that as text for a heading in the final
document.
Here's a bit of the original. I've attached a sample XML file.
<registration>
...
<issueList>
<issue code="ENG">Energy/Nuclear</issue>
<issue code="WAS">Waste (hazardous/solid/interstate/nuclear)</issue>
</issueList>
Here's what I'm doing to just try and capture that first instance of
<issue code>, which, in this case, is "Energy/Nuclear."
codes = XPath.match( doc, "//registration/issueList/issue code[1]" )
puts codes
It's giving me ALL of the <issue code>s, no matter what I put there as a
quantifier. I've tried "[1]", as shown. I've tried [0], first,
[position()<2], but, the results all look the same. It just gives me the
whole list, not the first entries I'm asking for.
Thanks,
Peter

Attachments:
http://www.ruby-...attachment/391...

--
Posted via http://www.ruby-....

2 Answers

Peter Bailey

9/25/2007 12:54:00 PM

0

Peter Bailey wrote:
> Hello,
> I'm trying to convert xml files to SGML. The publishing system at our
> company uses SGML. And, basically, the SGML I want to create is just
> CALS, which is the SGML tables standard. So, I'm trying to use REXML to
> parse the XML and delineate all of the necessary elements that need to
> be converted. And, I need to do some gathering and sorting. My client,
> an editor in my company, wants to pick the first from the list of a
> series of elements and use that as text for a heading in the final
> document.
> Here's a bit of the original. I've attached a sample XML file.
> <registration>
> ...
> <issueList>
> <issue code="ENG">Energy/Nuclear</issue>
> <issue code="WAS">Waste (hazardous/solid/interstate/nuclear)</issue>
> </issueList>
> Here's what I'm doing to just try and capture that first instance of
> <issue code>, which, in this case, is "Energy/Nuclear."
> codes = XPath.match( doc, "//registration/issueList/issue code[1]" )
> puts codes
> It's giving me ALL of the <issue code>s, no matter what I put there as a
> quantifier. I've tried "[1]", as shown. I've tried [0], first,
> [position()<2], but, the results all look the same. It just gives me the
> whole list, not the first entries I'm asking for.
> Thanks,
> Peter

Never mind. I think I got it. I'm obviously new to XML, so, I was
confused about what's an element and what's an attribute. I did this and
I'm getting closer:

codes = XPath.match( doc, "//registration/issueList/issue[1]/" )

Thanks, anyway.
-Peter

--
Posted via http://www.ruby-....

Keith Fahlgren

9/27/2007 2:37:00 AM

0

On 9/25/07, Peter Bailey <pbailey@bna.com> wrote:
> > It's giving me ALL of the <issue code>s, no matter what I put there as a
> > quantifier. I've tried "[1]", as shown. I've tried [0], first,
> > [position()<2], but, the results all look the same. It just gives me the
> > whole list, not the first entries I'm asking for.

You may also be interested in XPath.first():
http://www.ruby-doc.org/stdlib/libdoc/rexml/rdoc/classes/REXML/XPath.ht...


HTH,
Keith