Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: XML::Rules Parsing Order

by BrowserUk (Pope)
on Feb 09, 2015 at 19:40 UTC ( #1116095=note: print w/replies, xml ) Need Help??


in reply to XML::Rules Parsing Order

Will parent_tag or child_tag be parsed first? i.e. Does the parsing happen when a start tag is met, or when an end tag is met?

The docs say:

These rules are evaluated/executed whenever a tag if fully parsed including all the content and child tags and they may access the content and attributes of the specified tag plus the stuff produced by the rules evaluated for the child tags.

So, child tags are parsed before parent tags; so that the parent tag rules have access to whatever is produced from the parsing of the child tags.

Is there a way to always have parent_tag to be parsed first?

Doesn't look like it. But why would you want to?


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked

Replies are listed 'Best First'.
Re^2: XML::Rules Parsing Order
by runrig (Abbot) on Feb 09, 2015 at 19:51 UTC
    Is there a way to always have parent_tag to be parsed first?
    Doesn't look like it. But why would you want to?
    E.g., maybe you're inserting parent/child records into the database, and in order to maintain referential integrity, you need to insert the parent records first. Assuming that all parent-specific data is available in the attributes of the parent tag, this would be possible with a start rule on the parent tag. That's one reason why I might want to...as to why the OP wants to, I wouldn't know :-)

      Okay. But if you do it when the parent tag is parsed, you have all the information from the child record available also, so you can do both in which ever order makes sense.

      But if do the parent before you parsed the child(ren), the child tag might be missing or corrupted, and you'd have then to try and back out the parent record from the DB.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority". I'm with torvalds on this
      In the absence of evidence, opinion is indistinguishable from prejudice. Agile (and TDD) debunked
      Yes I need to use some content (not attributes) in the parent tag to decide if the content in the child tag should be written to the db or not. So looks like I can only store the content of the child tag in a buffer first, and then analyze it when the ending parent tag is parsed? Thanks!
        If you use one of the 'as array' rules (e.g., child_tag => 'as array'), then the child nodes get pushed to a 'buffer' for you, and will be available (as an arrayref) when parsing the parent tag.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1116095]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2021-03-01 20:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favorite kind of desktop background is:











    Results (22 votes). Check out past polls.

    Notices?