epub:create-ops create-ops

epubtools/modules/create-ops/xpl/create-ops.xpl

Import URI: ../modules/create-ops/xpl/create-ops.xpl

Input Ports

NameDocumentationConnections

source

conf

/hierarchy – may be included in /epub-config

meta

/epub-config

Output Ports

NameDocumentationConnections

result

html

files

report

splitting-report

Options

NameDocumentationDefault

base-uri

target

'EPUB2'

css-filename

'stylesheet.css'

use-svg

'yes'

terminate-on-error

'yes'

debug

'no'

debug-dir-uri

'debug'

Subpipeline

Hashed file names are patched into the HTML before split

StepInputsOutputsOptions

p:group copy-resources

p:variable targetdir

source on create-ops

replace($base-uri, '^(.*[/])+(.*)', '$1')

p:variable css-handling

meta on create-ops

(/epub-config/@css-handling, 'regenerated-per-split')[1]

tr:store-debug d254e77

source

conf on create-ops

result

pipeline-step = 'epubtools/hierarchy'

active = $debug

base-uri = $debug-dir-uri

p:choose image-info

/epub-config/cover/@href

tr:file-uri fu

source

result on d254e77

resolver

p:documenthttp://transpect.io/xslt-util/xslt-based-catalog-resolver/xsl/resolve-uri-by-catalog.xsl

catalog

p:documenthttp://this.transpect.io/xmlcatalog/catalog.xml

result

fetch-http = 'true'

make-unique = 'false'

filename = resolve-uri($href, base-uri())

p:add-attribute replace-with-local

source

meta on create-ops

result

attribute-name = 'href'

match = '/epub-config/cover'

attribute-value = /*/@local-href

tr:image-identify ii

source

result on replace-with-local

result

href = /epub-config/cover/@href

p:sink sink1

source

result on ii

p:otherwise

p:identity i

source

 <c:error>No /epub-config/cover/@href given</c:error>      

result

p:sink sink1-5

source

result on i

tr:store-debug d254e191

source

result

pipeline-step = 'epubtools/create-ops/cover-image-info'

active = $debug

base-uri = $debug-dir-uri

p:sink sink2

source

result on d254e191

tr:store-debug d254e200

source

meta-with-uri-resolved-cover-href on image-info

result

pipeline-step = 'epubtools/epub-config'

active = $debug

base-uri = $debug-dir-uri

p:sink sink2a

source

result on d254e200

p:delete delete-dtd-artifacts

Possible DTD parsing artifacts

source

source on create-ops

result

match = '/html:html/@version | /html:html/html:head/@profile'

p:choose conditionally-check-hrefs

/epub-config/checks/check[@param = 'epub-check-http-resources']/@value = 'true'

p:viewport check-hrefs

p:choose d254e268

/*/@error-status

p:add-attribute d254e277

source

source on create-ops

result

attribute-name = 'error-status'

match = '/*'

attribute-value = /*/@error-status

p:add-attribute d254e285

source

result on d254e277

result

attribute-name = 'checked-href'

match = '/*'

attribute-value = /*/@href

p:otherwise

p:identity d254e296

source

source on create-ops

result

p:otherwise

p:identity d254e306

source

result on delete-dtd-artifacts

result

p:sink d254e310

source

p:xslt attach-cover

If there is not yet a div with an id 'epub-cover-image-container', it will be inserted into the body as a first child.

source

result on conditionally-check-hrefs

meta-with-uri-resolved-cover-href on image-info

diagnostics on image-info

file-uri on image-info

stylesheet

p:document../xsl/attach-cover.xsl

result

tr:store-debug d254e341

source

result on attach-cover

result

pipeline-step = 'epubtools/create-ops/cover-attached'

active = $debug

base-uri = $debug-dir-uri

css:parse css-parse0

source

result on d254e341

stylesheet

This stylesheet overwrites certain css:expand templates or variables. This is done because CSS3 isn't supported completely.

In that stylesheet text-decoration and other porperties can be changed to supported values. When CSS3 is supported it might be necessary to use this input port dynamically.

p:documenthttp://transpect.io/css-tools/xsl/css2-1-parser.xsl

result

debug = $debug

debug-dir-uri = $debug-dir-uri

p:add-attribute css-parse1

source

result on css-parse0

result

match = '/*'

attribute-name = 'xml:base'

attribute-value = concat( $targetdir, 'epub/OEBPS/styles/', $css-filename)

p:viewport resolve-resource-uris

tr:store-debug d254e402

source

result

pipeline-step = 'epubtools/create-ops/resolve-resource-uris'

active = $debug

base-uri = $debug-dir-uri

p:sink sink3

source

result on d254e402

p:xslt generate-filelist

source

result on attach-cover

result on resolve-resource-uris

stylesheet

p:document../xsl/extract-filerefs.xsl

result

tr:store-debug d254e433

source

result on generate-filelist

result

pipeline-step = 'epubtools/create-ops/filelist'

active = $debug

base-uri = $debug-dir-uri

p:sink d254e440

source

result on d254e433

p:xslt css-parse

source

result on resolve-resource-uris

result on generate-filelist

parameters

p:empty

stylesheet

p:document../xsl/add-local-resource-paths-to-css.xsl

result

tr:store-debug d254e460

source

result on css-parse

result

pipeline-step = 'epubtools/create-ops/parse-css'

active = $debug

base-uri = $debug-dir-uri

p:sink d254e467

source

result on d254e460

p:viewport file-iteration

result on generate-filelist

p:variable uri

(/c:file/@href, /c:file/@oebps-name)[1]

p:choose http-or-file

matches($uri, 'https?:')

p:add-attribute d254e505

source

 <c:request method="GET"/>

result

match = '/c:request'

attribute-name = 'href'

attribute-value = $uri

p:try http-request

p:group d254e520

p:http-request d254e524

source

result on d254e505

result

tr:store-debug d254e526

source

result on d254e524

result

pipeline-step = concat('epubtools/create-ops/http-requests/', c:file/@name)

active = $debug

base-uri = $debug-dir-uri

p:catch catch

error

p:identity d254e543

source

error on catch

result

p:sink sink5

source

p:add-attribute d254e556

source

current on file-iteration

result

attribute-name = 'query-hash'

match = '/*'

attribute-value = ''

p:hash hashing

source

result on d254e556

parameters

p:empty

result

algorithm = 'crc'

match = '@query-hash'

value = /*/@query-string

p:sink sink6

source

result on hashing

p:xslt apply-hash

source

result on hashing

result on http-request

parameters

p:empty

stylesheet

p:document../xsl/apply-hash.xsl

result

tr:store-debug d254e594

source

result on apply-hash

result

pipeline-step = concat('epubtools/create-ops/files/', c:file/@name)

active = $debug

base-uri = $debug-dir-uri

p:store store-http-resource

source

result on http-request

result

href = c:file/@target-filename

tr:store-debug d254e620

source

result on apply-hash

result

pipeline-step = concat('epubtools/create-ops/filelist-after-patch/', c:file/@name)

active = $debug

base-uri = $debug-dir-uri

p:sink d254e637

source

result on d254e620

p:otherwise

p:try try-copy

p:group d254e649

cxf:info file-exists

href = c:file/@local-href

p:for-each copy

cxf:copy cp

fail-on-error = if ($terminate-on-error = 'yes') then 'true' else 'false'

target = c:file/@target-filename

href = c:file/@local-href

p:catch catch

error

tr:store-debug d254e695

source

error on catch

result

pipeline-step = 'epubtools/create-ops/copy-error'

active = $debug

base-uri = $debug-dir-uri

p:store dummy

source
<dummy>1</dummy>

result

method = 'text'

href = c:file/@target-filename

p:add-attribute is-text-file

source

current on file-iteration

result

attribute-name = 'media-type'

attribute-value = 'text/plain'

match = '/c:file'

p:add-attribute is-error

source

result on is-text-file

result

match = '/*'

attribute-name = 'error'

attribute-value = 'File not found (or copying failed for another reason)'

p:sink sink6-5

source

p:viewport ii-content0

tr:store-debug ii-content

source

result

pipeline-step = 'epubtools/create-ops/image-identify-content'

active = $debug

base-uri = $debug-dir-uri

p:sink sink7

source

result on ii-content

p:validate-with-relax-ng validate-metadata-conf

source

meta-with-uri-resolved-cover-href on copy-resources

schema

p:document../../../schema/metadata-conf/metadata-conf.rng

result

assert-valid = if ($terminate-on-error = 'yes') then 'true' else 'false'

tr:store-debug d254e803

source

result on validate-metadata-conf

result

pipeline-step = 'epubtools/create-ops/validate-metadata-conf'

extension = 'xml'

active = $debug

base-uri = $debug-dir-uri

p:sink sink-valhierarchy

source

result on d254e803

p:xslt patch-http-hrefs

source

html on copy-resources

result on ii-content

parameters

p:empty

stylesheet

p:document../xsl/patch-http-hrefs.xsl

result

p:delete d254e831

Remove artifacts from link checking

source

result on patch-http-hrefs

result

match = '@error-status | @checked-href'

tr:store-debug d254e836

source

result on d254e831

result

pipeline-step = 'epubtools/create-ops/pre-split'

extension = 'html'

active = $debug

base-uri = $debug-dir-uri

epub:html-splitter html-splitter

source

result on d254e836

conf

conf on create-ops

meta

meta-with-uri-resolved-cover-href on copy-resources

css-xml

css-xml on copy-resources

result

base-uri = $base-uri

target = $target

debug = $debug

debug-dir-uri = $debug-dir-uri

p:viewport html-file-size

files on html-splitter

p:sink d254e901

source

p:xslt prune-filelist

If CSS handling is set to 'regenerate-per-split', the splitter will return a css:css document with XML representations of @font-face at rules (and potentially other stuff, such as background images) that was detected as being unutilized in any of the split HTML file. We may now remove the local URLs from the file list that correspond to //css:resource/@href attributes in the document on the splitter’s unused-css-resources port.

source

result on ii-content

unused-css-resources on html-splitter

parameters

p:empty

stylesheet

 <xsl:stylesheet version="2.0">
   <xsl:variable name="resource-hrefs" as="xs:string*" select="collection()//css:resource/@href"/>
   <xsl:template match="*|@*">
     <xsl:copy copy-namespaces="no">
       <xsl:apply-templates select="@*, node()"/>
     </xsl:copy>
   </xsl:template>
   <xsl:template match="c:file[@href = $resource-hrefs]"/>
 </xsl:stylesheet>

result

p:wrap-sequence d254e940

source

result on prune-filelist

result on html-file-size

result

wrapper = 'cx:document'

p:add-attribute d254e949

source

result on d254e940

result

match = '/*'

attribute-name = 'name'

attribute-value = 'wrap-file-uris'

tr:store-debug wrap-file-uris

source

result on d254e949

result

pipeline-step = 'epubtools/create-ops/wrap-file-uris'

active = $debug

base-uri = $debug-dir-uri

p:sink sink10

source

result on wrap-file-uris

tr:store-debug d254e957

source

result on html-splitter

result

pipeline-step = 'epubtools/create-ops/wrap-files'

active = $debug

base-uri = $debug-dir-uri

p:sink d254e968

source

result on d254e957

Used by