[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Getting epub: namespace into root html element

Subject: Re: Getting epub: namespace into root html element
From: "Peter West lists@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 27 Jun 2014 04:59:15 -0000
Re:  Getting epub: namespace into root html element
On 24 Jun 2014, at 11:41 pm, Wendell Piez wapiez@xxxxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> Dear Peter,

> ...

> Particularly, when it comes to namespaces, all you need to do is to
> ensure that the namespaces you want are on the elements where you want
> them (whether those elements are copied or created anew by your XSLT),
> and then let your serializer take care of the syntax. Since the epub
> namespace isn't anywhere in your source data, it is not copied through
> when you copy through all the other nodes in your source. (It is
> added, however, when you generate your attributes with names in that
> namespace. So declarations for it appear on elements with those
> attributes.) The solution is to add it everywhere.
>
> You can add it everywhere by modifying your identity template like this:
>
> <xsl:template match="@*|node()">
>  <xsl:copy>
>    <xsl:namespace name="epub">http://www.idpf.org/2007/ops</xsl:namespace>
>    <xsl:apply-templates select="@*|node()"/>
>  </xsl:copy>
> </xsl:template>

This worked a treat. XSLT 3.0 and an html-version on the output sorted out the
doctype.


Peter West

"...for I am gentle and lowly in heart, and you will find rest for your
souls."


> ...

> The namespace will then be bound to every node in your result.
> Consequently you will see it declared on the document element in your
> output -- and probably nowhere else. (I say 'probably' because that is
> the way a well-designed serializer will do it, other things being
> equal.)
>
...
> On Tue, Jun 24, 2014 at 4:30 AM, Peter West lists@xxxxxxxxx
> <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>> I'm trying to convert EPUB2 files to EPUB3.  In the course of that, I need
to include some epub:type attributes. I also want to include a <!DOCTYPE html>
declaration, although I have seen it argued that the declaration is not
necessary.
>>
>> I have managed to get the DOCTYPE declaration to work by a method that has
been described before in a number of places, and I have the epub:type
attributes appearing on the relevant elements.  However, the epub namespace is
declared on every element, and I haven't been able to get it into the root
element.  How can I do this?
>>
>> My stylesheet starts like this:
>>
>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>>    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>>    xmlns:xh="http://www.w3.org/1999/xhtml"
>>    xmlns:epub="http://www.idpf.org/2007/ops"
>>    exclude-result-prefixes="xs xh"
>>    version="2.0">
>>
>>    <xsl:strip-space elements="*"/>
>>    <xsl:output method="xhtml" />
>>    <xsl:template match="/">
>>        <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE
html></xsl:text>
>>        <xsl:apply-templates/>
>>    </xsl:template>
>>
>>    <xsl:template match="@*|node()">
>>        <xsl:copy>
>>            <xsl:apply-templates select="@*|node()"/>
>>        </xsl:copy>
>>    </xsl:template>

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.