|
Subject: [xsl] Filtering XML elements based on tokenized external parameters? From: "Ramon Felciano" <felciano@xxxxxxxxxxxxx> Date: Fri, 17 Jun 2005 09:44:00 -0700 |
Hello --
I'm trying to do parameterized XSLT-based filtering to strip out
unwanted structure from an XML file. The XML file represents a graph
data structure along with some other metadata. Conceptually I want to
extract a subgraph from this data structure, but want to do so in an
upwards-compatible way such that any additional tags in the XML are
carried over to the resulting document. For example, given this XML
file:
<graph>
<node id="alpha"/>
<node id="beta"/>
<node id="delta"/>
<node id="gamma"/>
<edge from="alpha" to="delta"/>
<edge from="alpha" to="beta"/>
<edge from="alpha" to="gamma"/>
<edge from="beta" to="beta"/>
<mymetadata id="123"/>
</graph>
Given the above simple graph data structure, I want to produce a
filtered version that only includes node elements (ideally both node and
edge elements) that match a given set of input parameters, as well as
any other tags that might be included (e.g. the mymetadata tag). I'd
ideally like to issue a call like this so that I integrate this w shell
scripts:
xsltproc mytransform.xslt myfile.xml --param nodelist "alpha,beta"
And get this back:
<graph>
<node id="alpha"/>
<node id="beta"/>
<edge from="alpha" to="beta"/>
<edge from="beta" to="beta"/>
<mymetadata id="123"/>
</graph>
I have two questions:
1. What is the best way to create a pattern match that is parameterized
based on the incoming nodelist? I'd like to flexible about delimeters
(e.g. have both "alpha,beta" and "alpha , beta" work). I've tried
playing with tokenize from EXSLT but can't figure how to use the
resulting tokens to implement the filtering in a single-pass.
2. Is there a way to implement this to also include the alpha-gamma edge
and the gamma node, based on the partial edge match to "alpha"? I know
how to do this w multiple passes (e.g. by marking the edges, then the
nodes, then filtering) but was wondering if there was a nice one-pass
functional approach I've missed.
Thank you in advance for your time.
Ramon
_________________________________
Ramon M. Felciano
INGENUITY Systems, Inc.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] [XSLT 2.0] Determining th, Dimitre Novatchev | Thread | RE: [xsl] Filtering XML elements ba, Aron Bock |
| RE: [xsl] How to output <xsl:messag, Mathieu Sagot | Date | RE: [xsl] How to output <xsl:messag, Dan |
| Month |