[Openstack-docs] Use of XML xi:include with xpointer
David Cramer
david.cramer at rackspace.com
Mon Aug 5 21:10:35 UTC 2013
Unfortunately, the (confusingly named) xpointer scheme was only ever
supported by libxml (xsltproc/xmllint). We're using Calabash to process
the xml which supports the xpath() scheme. In my other post I provide
examples of how to grab all the children of an element or all except for
the title.
In my experiments, I haven't gotten Calabash to be namespace-aware when
handling the xpath expressions. I've posted a question to xproc-dev
about this to find out what's up.
Regards,
David
On 07/31/2013 10:36 AM, Shaun McCance wrote:
> XInclude doesn't let you add child elements to the included element,
> but you can include multiple elements with XInclude, just not with
> the element() scheme. The xpointer() scheme allows you to use XPath,
> so you can put something at the end by manually duplicating the
> section element, then including the child content of the target
> section element:
>
> <section id="some_id">
> <xi:include href="some_file.xml"
> xpointer="xpointer(id('some_id')/*)"/>
> <para>Something at the end</para>
> </section>
>
> It's more complicated to put something at the beginning, because
> you have to account for things like title and info elements. Not
> accounting for titleabbrev and subtitle:
>
> <section id="some_id">
> <xi:include href="some_file.xml"
> xpointer="xmlns(db=http://docbook.org/ns/docbook)
> xpointer(id('some_id')/db:title)">
> <xi:fallback/>
> </xi:include>
> <xi:include href="some_file.xml"
> xpointer="xmlns(db=http://docbook.org/ns/docbook)
> xpointer(id('some_id')/db:info)">
> <xi:fallback/>
> </xi:include>
> <para>Something at the beginning</para>
> <xi:include href="some_file.xml"
> xpointer="xmlns(db=http://docbook.org/ns/docbook)
> xpointer(id('some_id')/*
> [not(self::db:title or self::db:info)]
> )"/>
> <para>Something at the end</para>
> </section>
>
> Kind of messy, but still more long-term maintainable than manually
> including each child element of the target section.
>
> I wrote a howto on XInclude a couple years back, which you might
> find useful:
>
> http://blogs.gnome.org/shaunm/2011/07/21/understanding-xinclude/
>
> --
> Shaun
>
> On Wed, 2013-07-31 at 02:41 +0000, Sean Roberts wrote:
>> Both actually. I want to place a submit bug link at the end of each
>> section. Also want to add some text at the beginning for many of the
>> included sections describing training objectives.
>>
>>
>> I'd also be interested in ideas on using xslt to rip and replace tags.
>> But that probably can wait a little bit.
>>
>> ~sean
>>
>> On Jul 30, 2013, at 9:18, "Anne Gentle"
>> <annegentle at justwriteclick.com> wrote:
>>
>>
>>> Hi Sean,
>>> Do you want some sort of "glue text" so that the guide can be read
>>> in a linear way? Or is it text that you'll use over and over, such
>>> as "Now go take the test." Let us know what you're trying to do.
>>>
>>>
>>> You can't really strip a tag at a time without XSLT (the transform
>>> code that lives in the Maven plugin).
>>> Anne
>>>
>>>
>>> On Tue, Jul 30, 2013 at 9:19 AM, Sean Roberts
>>> <seanrob at yahoo-inc.com> wrote:
>>> Ideas on how to add text to the included section or final
>>> page? Part of the problem may be from that I'm stuck using
>>> the chapter or section of the original XML. If I could
>>> include, strip the section tags, then I could add text no
>>> problem.
>>>
>>> ~sean
>>>
>>> On Jul 30, 2013, at 6:54, "Anne Gentle"
>>> <annegentle at justwriteclick.com> wrote:
>>>
>>>
>>> > I think DocBook sees the markup as a closed section
>>> > followed by a para whic is invalid.
>>> >
>>> > Anne Gentle
>>> > Content Stacker
>>> > anne at openstack.org
>>> >
>>> >
>>> >
>>> > On Jul 30, 2013, at 8:38 AM, Sean Roberts
>>> > <seanrob at yahoo-inc.com> wrote:
>>> >
>>> >
>>> > > I am pulling in a section through <xi:include
>>> > > href="http.....xpointer="element(foobar)"></xi:include>
>>> > > If I want to use additional text, I'm forced to make it
>>> > > a section as well. I want to add text to the beginning
>>> > > or end of the the included section.
>>> > > I tried <xi:include
>>> > > href="http.....xpointer="element(foobar)"><para>blah
>>> > > blah</para></xi:include>
>>> > > , which shows up without error in oxygen, but maven
>>> > > seems to strip it out during HTML build.
>>> > >
>>> > > ~sean
>>> > >
>>> > > On Jul 30, 2013, at 6:24, "Anne Gentle"
>>> > > <annegentle at justwriteclick.com> wrote:
>>> > >
>>> > >
>>> > > > Hi Sean,
>>> > > > Post your XML code so we can take a closer look, or a
>>> > > > link to the patch and the file name so we can look at
>>> > > > it.
>>> > > > Thanks!
>>> > > > Anne
>>> > > >
>>> > > >
>>> > > > On Tue, Jul 30, 2013 at 2:56 AM, Sean Roberts
>>> > > > <seanrob at yahoo-inc.com> wrote:
>>> > > > I have another question. I'm bringing in the
>>> > > > sections which is the smallest page into the
>>> > > > built HTML. I'm trying to add text and links
>>> > > > within the final HTML page without success.
>>> > > > Oxygen shows the link and text fine, but the
>>> > > > maven built site only has the included
>>> > > > section. Perhaps some adjustment within the
>>> > > > pom file...
>>> > > >
>>> > > > ~sean
>>> > > >
>>> > > > On Jul 29, 2013, at 9:34, "Diane Fleming"
>>> > > > <diane.fleming at rackspace.com> wrote:
>>> > > >
>>> > > >
>>> > > > > I don't know if this will work, but this is
>>> > > > how I used xpointer to pull in
>>> > > > > content from one file to another:
>>> > > > >
>>> > > > >
>>> > > > > Target file (pulls in content)
>>> > > > >
>>> > > > > <title>Overview</title>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over1)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over2)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over3)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over4)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over5)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over6)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over7)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over8)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over9)"/>
>>> > > > > <xi:include href="ch_gs_overview.xml"
>>> > > > > xpointer="element(over10)"/>
>>> > > > > <xi:include href="section_virt_ext.xml"/>
>>> > > > >
>>> > > > >
>>> > > > >
>>> > > > > Source file
>>> > > > >
>>> > > > >
>>> > > > > <title>Overview</title>
>>> > > > > <section
>>> > > > xml:id="cn_overview"><title>Cloud
>>> > > > Networks</title>
>>> > > > > <para xml:id="over1">Cloud Networks lets
>>> > > > you create a virtual
>>> > > > > Layer 2 network, known as an isolated
>>> > > > network, which gives you
>>> > > > > greater control and security when you
>>> > > > deploy web applications.
>>> > > > > </para>
>>> > > > > <para xml:id="over2">When you create a
>>> > > > next generation Cloud
>>> > > > > Server, Cloud Networks enables you to
>>> > > > attach one or more
>>> > > > > networks to your server. You can
>>> > > > attach an isolated network
>>> > > > > that you have created or a Rackspace
>>> > > > network. </para>
>>> > > > > <para xml:id="over3">If you install the
>>> > > > &virt_ext;, you can create
>>> > > > > a virtual interface to a specified
>>> > > > Rackspace or isolated
>>> > > > > network and attach that network to an
>>> > > > existing server
>>> > > > > instance. You can also list virtual
>>> > > > interfaces for and delete
>>> > > > > virtual interfaces from a server
>>> > > > instance. For information
>>> > > > > about the &virt_ext;, see <xref
>>> > > > linkend="section_virt_ext"
>>> > > > > />.</para>
>>> > > > >
>>> > > > >
>>> > > > > etc.
>>> > > > >
>>> > > > >
>>> > > > > Diane
>>> > > > >
>>> > > > >
>>> > > > ----------------------------------------------
>>> > > > > Diane Fleming
>>> > > > > Software Developer II - US
>>> > > > >
>>> > > > > diane.fleming at rackspace.com
>>> > > > > Cell 512.323.6799
>>> > > > > Office 512.874.1260
>>> > > > > Skype drfleming0227
>>> > > > > Google-plus diane.fleming at gmail.com
>>> > > > >
>>> > > > >
>>> > > > >
>>> > > > >
>>> > > > >
>>> > > > >
>>> > > > > On 7/29/13 9:27 AM, "Sean Roberts"
>>> > > > <seanrob at yahoo-inc.com> wrote:
>>> > > > >
>>> > > > >> I'm working on reusing content from remote
>>> > > > XML formatted sources to
>>> > > > >> create new content. I'm using xi:include
>>> > > > xpointer to a section of an
>>> > > > >> existing XML file. Using the editor oxygen
>>> > > > I can see the remote content,
>>> > > > >> so I know my href is valid. But maven fails
>>> > > > to build the html from the
>>> > > > >> xml returning bad pointer.
>>> > > > >>
>>> > > > >> The remote content isn't using DTD or
>>> > > > XMLschema. I'm hoping I can figure
>>> > > > >> out how to walk the structure without
>>> > > > having to.
>>> > > > >> Any XML peoples that can help?
>>> > > > >>
>>> > > > >> ~sean
>>> > > > >>
>>> > > > _______________________________________________
>>> > > > >> Openstack-docs mailing list
>>> > > > >> Openstack-docs at lists.openstack.org
>>> > > > >>
>>> > > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-docs
>>> > > > >
>>> > > > >
>>> > > >
>>> > > > _______________________________________________
>>> > > > Openstack-docs mailing list
>>> > > > Openstack-docs at lists.openstack.org
>>> > > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-docs
>>> > > >
>>> > > >
>>> > > >
>>> > > >
>>> > > >
>>> > > > --
>>> > > > Anne Gentle
>>> > > > annegentle at justwriteclick.com
>>>
>>>
>>>
>>>
>>> --
>>> Anne Gentle
>>> annegentle at justwriteclick.com
>> _______________________________________________
>> Openstack-docs mailing list
>> Openstack-docs at lists.openstack.org
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-docs
>
>
>
> _______________________________________________
> Openstack-docs mailing list
> Openstack-docs at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-docs
>
More information about the Openstack-docs
mailing list