Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Stephane Crozat
hdoc
Commits
6fa7b56c
Commit
6fa7b56c
authored
Dec 03, 2015
by
Bastien FREMONDIERE
Browse files
Added mindmapping to hdoc folder
parent
1982bbec
Changes
92
Expand all
Hide whitespace changes
Inline
Side-by-side
mindMapping_to_Hdoc/hdoctoopale/.gitignore
0 → 100755
View file @
6fa7b56c
decompressedHdoc
decompressedOpale
*.scar
*.zip
Bachimont
generateContentPath.xml
moveRessourceFiles.xml
mindMapping_to_Hdoc/hdoctoopale/.wspmeta
0 → 100755
View file @
6fa7b56c
This diff is collapsed.
Click to expand it.
mindMapping_to_Hdoc/hdoctoopale/addCourseUcIds.xsl
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:h=
"http://www.utc.fr/ics/hdoc/xhtml"
xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
version=
"1.0"
xmlns:sc=
"http://www.utc.fr/ics/scenari/v3/core"
xmlns:op=
"utc.fr:ics/opale3"
xmlns:sp=
"http://www.utc.fr/ics/scenari/v3/primitive"
>
<xsl:output
method=
"xml"
indent=
"yes"
encoding=
"UTF-8"
/>
<xsl:template
match=
"@*|node()"
>
<xsl:copy>
<xsl:apply-templates
select=
"@*|node()"
/>
</xsl:copy>
</xsl:template>
<xsl:template
name=
"string-to-lowercase"
>
<xsl:param
name=
"lcletters"
>
abcdefghijklmnopqrstuvwxyzeeeeaaaa
</xsl:param>
<xsl:param
name=
"ucletters"
>
ABCDEFGHIJKLMNOPQRSTUVWXYZéèêëàâàá
</xsl:param>
<xsl:param
name=
"text"
/>
<xsl:value-of
select=
"translate($text,$ucletters,$lcletters)"
/>
</xsl:template>
<xsl:template
name=
"string-to-slug"
>
<xsl:param
name=
"text"
select=
"''"
/>
<xsl:variable
name=
"dodgyChars"
select=
"' ,.#_-!?*:;=+ /(){}'"
/>
<xsl:variable
name=
"replacementChar"
select=
"'------------------'"
/>
<xsl:variable
name=
"oneline"
>
<xsl:value-of
select=
"normalize-space(translate($text,' ',''))"
/>
</xsl:variable>
<xsl:variable
name=
"lowercased"
><xsl:call-template
name=
"string-to-lowercase"
><xsl:with-param
name=
"text"
select=
"$oneline"
/></xsl:call-template></xsl:variable>
<xsl:variable
name=
"escaped"
><xsl:value-of
select=
"translate( $lowercased, $dodgyChars, $replacementChar )"
/></xsl:variable>
<xsl:variable
name=
"cleaned"
>
<xsl:call-template
name=
"string-replace-caller"
>
<xsl:with-param
name=
"text"
select=
"$escaped"
/>
<xsl:with-param
name=
"replace"
select=
"'---'"
/>
<xsl:with-param
name=
"by"
select=
"'-'"
/>
</xsl:call-template>
</xsl:variable>
<xsl:value-of
select=
"$cleaned"
/>
</xsl:template>
<xsl:template
name=
"string-replace-all"
>
<xsl:param
name=
"text"
/>
<xsl:param
name=
"replace"
/>
<xsl:param
name=
"by"
/>
<xsl:choose>
<xsl:when
test=
"contains($text,$replace)"
>
<xsl:value-of
select=
"substring-before($text,$replace)"
/>
<xsl:value-of
select=
"$by"
/>
<xsl:call-template
name=
"string-replace-all"
>
<xsl:with-param
name=
"text"
select=
"substring-after($text,$replace)"
/>
<xsl:with-param
name=
"replace"
select=
"$replace"
/>
<xsl:with-param
name=
"by"
select=
"$by"
/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select=
"$text"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template
name=
"string-replace-caller"
>
<xsl:param
name=
"text"
/>
<xsl:param
name=
"replace"
/>
<xsl:param
name=
"by"
/>
<xsl:variable
name=
"changed"
>
<xsl:choose>
<xsl:when
test=
"contains($text,$replace)"
>
<xsl:call-template
name=
"string-replace-all"
>
<xsl:with-param
name=
"text"
select=
"$text"
/>
<xsl:with-param
name=
"replace"
select=
"$replace"
/>
<xsl:with-param
name=
"by"
select=
"$by"
/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select=
"$text"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when
test=
"contains($changed,$replace)"
>
<xsl:call-template
name=
"string-replace-caller"
>
<xsl:with-param
name=
"text"
select=
"$changed"
/>
<xsl:with-param
name=
"replace"
select=
"$replace"
/>
<xsl:with-param
name=
"by"
select=
"$by"
/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
select=
"$changed"
/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template
match=
"sp:courseUc"
>
<sp:courseUc>
<xsl:variable
name=
"slug"
>
<xsl:call-template
name=
"string-to-slug"
>
<xsl:with-param
name=
"text"
select=
"op:expUc/op:uM/sp:title"
/>
</xsl:call-template>
</xsl:variable>
<xsl:variable
name=
"id"
>
<xsl:value-of
select=
"count(preceding::sp:courseUc)+1"
/>
<xsl:text>
-
</xsl:text>
<xsl:value-of
select=
"$slug"
/>
</xsl:variable>
<xsl:attribute
name=
"data-export-id"
>
<xsl:text>
uoc-
</xsl:text>
<xsl:value-of
select=
"$id"
/>
</xsl:attribute>
<xsl:attribute
name=
"data-export-file"
>
unit-
<xsl:value-of
select=
"$id"
/>
.xml
</xsl:attribute>
<xsl:apply-templates
select=
"@*|node()"
/>
</sp:courseUc>
</xsl:template>
</xsl:stylesheet>
\ No newline at end of file
mindMapping_to_Hdoc/hdoctoopale/addCourseUcReferences.xsl
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:h=
"http://www.utc.fr/ics/hdoc/xhtml"
xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
version=
"1.0"
xmlns:sc=
"http://www.utc.fr/ics/scenari/v3/core"
xmlns:op=
"utc.fr:ics/opale3"
xmlns:sp=
"http://www.utc.fr/ics/scenari/v3/primitive"
>
<xsl:output
method=
"xml"
indent=
"yes"
encoding=
"UTF-8"
/>
<xsl:template
match=
"@*|node()"
>
<xsl:copy>
<xsl:apply-templates
select=
"@*|node()"
/>
</xsl:copy>
</xsl:template>
<xsl:template
match=
"sp:courseUc"
>
<sp:courseUc>
<xsl:attribute
name=
"sc:refUri"
>
<xsl:value-of
select=
"@data-export-file"
/>
</xsl:attribute>
</sp:courseUc>
</xsl:template>
</xsl:stylesheet>
\ No newline at end of file
mindMapping_to_Hdoc/hdoctoopale/copyCourseUc.xsl
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:h=
"http://www.utc.fr/ics/hdoc/xhtml"
xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
version=
"1.0"
xmlns:sc=
"http://www.utc.fr/ics/scenari/v3/core"
xmlns:op=
"utc.fr:ics/opale3"
xmlns:sp=
"http://www.utc.fr/ics/scenari/v3/primitive"
>
<xsl:output
method=
"xml"
indent=
"yes"
encoding=
"UTF-8"
/>
<!-- The ID of the courseUc element that needs to be copied has to be passed here -->
<xsl:param
name=
"elementid"
xsl:required=
"yes"
xsl:as=
"xsl:string"
/>
<xsl:template
match=
"sc:item"
>
<xsl:apply-templates
select=
".//sp:courseUc"
/>
</xsl:template>
<xsl:template
match=
"sp:courseUc[@data-export-id = $elementid]"
>
<sc:item>
<!-- Once we are in the right courseUc, we can just copy everything -->
<xsl:copy-of
select=
"./*"
/>
</sc:item>
</xsl:template>
<xsl:template
match=
"*"
/>
</xsl:stylesheet>
\ No newline at end of file
mindMapping_to_Hdoc/hdoctoopale/global.properties
0 → 100755
View file @
6fa7b56c
tmpdir
=
tmp
OutputPathDivided
=
divided.scar
OutputPath
=
out.scar
\ No newline at end of file
mindMapping_to_Hdoc/hdoctoopale/hdoc_to_opale.ant
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project
name=
"hdoc_to_opale"
basedir=
"."
default=
"convert"
>
<property
file=
"global.properties"
/>
<taskdef
name=
"jing"
classname=
"com.thaiopensource.relaxng.util.JingTask"
>
<classpath>
<pathelement
location=
"lib/jing.jar"
/>
</classpath>
</taskdef>
<target
name=
"convert"
>
<!-- This is the main target : it is called whether by the project (as the default target) or by the user/converter
website, if specified in the command line. Basically, this target consists in several targets/ant buildfiles calls. -->
<antcall
target=
"CleanDirectory"
/>
<mkdir
dir=
"${tmpdir}"
/>
<antcall
target=
"UnzipHdocFile"
/>
<antcall
target=
"validateInput"
/>
<antcall
target=
"FindContentFiles"
/>
<ant
antfile=
"${tmpdir}/generateContentPath.xml"
/>
<antcall
target=
"ValidateOutput"
/>
<antcall
target=
"DivideOutput"
/>
<antcall
target=
"ZipOutput"
/>
<antcall
target=
"ZipDividedOutput"
/>
<antcall
target=
"CleanDirectory"
/>
</target>
<target
name=
"CleanDirectory"
>
<delete
dir=
"${tmpdir}"
/>
</target>
<target
name=
"UnzipHdocFile"
>
<!-- Unzip the input hdoc file. Decompressed folder is named "decompressedHdoc" : this name is the only one which
refers to the hdoc file furthermore in this project. -->
<unzip
src=
"${InputPath}"
dest=
"${tmpdir}/decompressedHdoc"
/>
<chmod
dir=
"${tmpdir}/decompressedHdoc"
perm=
"777"
/>
</target>
<target
name=
"FindContentFiles"
>
<!-- Finds the absolute path of container.xml and applies transformation0.xsl on it.-->
<first
id=
"first"
>
<fileset
dir=
"${tmpdir}/decompressedHdoc/META-INF"
includes=
"**/container.xml"
/>
</first>
<xslt
in=
"${toString:first}"
out=
"${tmpdir}/generateContentPath.xml"
style=
"transformation0.xsl"
processor=
"org.apache.tools.ant.taskdefs.optional.TraXLiaison"
/>
<chmod
file=
"${tmpdir}/generateContentPath.xml"
perm=
"777"
/>
</target>
<target
name=
"ZipOutput"
>
<copy
file=
".wspmeta"
todir=
"${tmpdir}/decompressedOpale"
/>
<mkdir
dir=
"${tmpdir}/decompressedOpale/res"
/>
<ant
antfile=
"${tmpdir}/moveRessourceFiles.xml"
/>
<zip
basedir=
"${tmpdir}/decompressedOpale"
destfile=
"${OutputPath}"
encoding=
"UTF-8"
/>
</target>
<target
name=
"ZipDividedOutput"
>
<copy
file=
".wspmeta"
todir=
"${tmpdir}/decompressedOpaleDivided"
/>
<copy
todir=
"${tmpdir}/decompressedOpaleDivided/res"
>
<fileset
dir=
"${tmpdir}/decompressedOpale/res"
includes=
"**"
/>
</copy>
<zip
basedir=
"${tmpdir}/decompressedOpaleDivided"
destfile=
"${OutputPathDivided}"
encoding=
"UTF-8"
/>
</target>
<!-- Validating the XML container file -->
<target
name=
"validateInput"
>
<jing
file=
"${tmpdir}/decompressedHdoc/META-INF/container.xml"
rngfile=
"schema/hdoc1-container.rng"
></jing>
</target>
<!-- Validating the XML output -->
<target
name=
"ValidateOutput"
>
<jing
file=
"${tmpdir}/decompressedOpale/main.xml"
rngfile=
"schema/op_ue.rng"
></jing>
</target>
<target
name=
"DivideOutput"
>
<mkdir
dir=
"${tmpdir}/decompressedOpaleDivided"
/>
<!-- Adding IDS to the general output file -->
<xslt
in=
"${tmpdir}/decompressedOpale/main.xml"
out=
"${tmpdir}/outputWithCourseUcIds.xml"
style=
"addCourseUcIds.xsl"
processor=
"org.apache.tools.ant.taskdefs.optional.TraXLiaison"
/>
<!-- Generating the root file (with refs to other files) -->
<xslt
in=
"${tmpdir}/outputWithCourseUcIds.xml"
out=
"${tmpdir}/decompressedOpaleDivided/main.xml"
style=
"addCourseUcReferences.xsl"
processor=
"org.apache.tools.ant.taskdefs.optional.TraXLiaison"
/>
<!-- Generating the ANT file that will copy the files -->
<xslt
in=
"${tmpdir}/outputWithCourseUcIds.xml"
out=
"${tmpdir}/exportUnits.ant"
style=
"prepareCourseUcCopies.xsl"
processor=
"org.apache.tools.ant.taskdefs.optional.TraXLiaison"
/>
<!-- Executing that ANT file -->
<ant
antfile=
"${tmpdir}/exportUnits.ant"
/>
</target>
</project>
mindMapping_to_Hdoc/hdoctoopale/lib/jing.jar
0 → 100755
View file @
6fa7b56c
File added
mindMapping_to_Hdoc/hdoctoopale/moveRessourceFiles.xsl
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:h=
"http://www.utc.fr/ics/hdoc/xhtml"
xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
version=
"1.0"
>
<property
file=
"global.properties"
/>
<xsl:output
method=
"xml"
indent=
"yes"
encoding=
"UTF-8"
/>
<!-- This template matches the root and create a ANT project, the root of any ANT buildfile. -->
<xsl:template
match=
"h:html"
>
<project
name=
"moveRessourceFiles"
basedir=
"."
default=
"moveRessourceFiles"
>
<target
name=
"moveRessourceFiles"
>
<xsl:apply-templates
select=
"./*"
/>
</target>
</project>
</xsl:template>
<!-- These templates guides XSL's motor. -->
<xsl:template
match=
"h:body"
>
<xsl:apply-templates
select=
"./h:section"
/>
</xsl:template>
<xsl:template
match=
"h:section"
>
<xsl:apply-templates
select=
"./h:section | ./h:div"
/>
</xsl:template>
<xsl:template
match=
"h:div"
>
<xsl:apply-templates
select=
"./h:img | ./h:audio | ./h:video | ./h:object"
/>
</xsl:template>
<!-- Targeted markups. -->
<xsl:template
match=
"h:img"
>
<copy
tofile=
"${{tmpdir}}/decompressedOpale/res/{./@src}"
file=
"${{tmpdir}}/decompressedHdoc/{./@src}"
/>
</xsl:template>
<xsl:template
match=
"h:audio"
>
<copy
tofile=
"${{tmpdir}}/decompressedOpale/res/{./@src}"
file=
"${{tmpdir}}/decompressedHdoc/{./@src}"
/>
</xsl:template>
<xsl:template
match=
"h:video"
>
<copy
tofile=
"${{tmpdir}}/decompressedOpale/res/{./@src}"
file=
"${{tmpdir}}/decompressedHdoc/{./@src}"
/>
</xsl:template>
<xsl:template
match=
"h:object"
>
<copy
tofile=
"${{tmpdir}}/decompressedOpale/res/{./@data}"
file=
"${{tmpdir}}/decompressedHdoc/{./@data}"
/>
</xsl:template>
<!-- These markups are matched in order to minimize "apply-templates" side-effects (i.e. their contents are not relevant for this transformation). -->
<xsl:template
match=
"h:head"
/>
<xsl:template
match=
"h:p"
/>
<xsl:template
match=
"h:em"
/>
<xsl:template
match=
"h:i"
/>
<xsl:template
match=
"h:span"
/>
<xsl:template
match=
"h:a"
/>
<xsl:template
match=
"h:ul"
/>
<xsl:template
match=
"h:ol"
/>
<xsl:template
match=
"h:li"
/>
<xsl:template
match=
"h:table"
/>
</xsl:stylesheet>
\ No newline at end of file
mindMapping_to_Hdoc/hdoctoopale/prepareCourseUcCopies.xsl
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:h=
"http://www.utc.fr/ics/hdoc/xhtml"
xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
version=
"1.0"
xmlns:sc=
"http://www.utc.fr/ics/scenari/v3/core"
xmlns:op=
"utc.fr:ics/opale3"
xmlns:sp=
"http://www.utc.fr/ics/scenari/v3/primitive"
>
<xsl:output
method=
"xml"
indent=
"yes"
encoding=
"UTF-8"
/>
<xsl:template
match=
"sc:item"
>
<project
name=
"copy-ucs"
default=
"main"
>
<taskdef
name=
"jing"
classname=
"com.thaiopensource.relaxng.util.JingTask"
>
<classpath>
<pathelement
location=
"lib/jing.jar"
/>
</classpath>
</taskdef>
<property
file=
"global.properties"
/>
<target
name=
"main"
>
<xsl:apply-templates
select=
".//sp:courseUc"
/>
</target>
</project>
</xsl:template>
<xsl:template
match=
"sp:courseUc"
>
<xslt
in=
"${{tmpdir}}/outputWithCourseUcIds.xml"
out=
"${{tmpdir}}/decompressedOpaleDivided/{@data-export-file}"
style=
"copyCourseUc.xsl"
processor=
"org.apache.tools.ant.taskdefs.optional.TraXLiaison"
>
<param
name=
"elementid"
expression=
"{@data-export-id}"
/>
</xslt>
<jing
file=
"${{tmpdir}}/decompressedOpaleDivided/{@data-export-file}"
rngfile=
"schema/op_expUc.rng"
></jing>
</xsl:template>
</xsl:stylesheet>
\ No newline at end of file
mindMapping_to_Hdoc/hdoctoopale/samples/sample01.hdoc
0 → 100755
View file @
6fa7b56c
File added
mindMapping_to_Hdoc/hdoctoopale/samples/sample02.hdoc
0 → 100755
View file @
6fa7b56c
File added
mindMapping_to_Hdoc/hdoctoopale/samples/sample03.hdoc
0 → 100755
View file @
6fa7b56c
File added
mindMapping_to_Hdoc/hdoctoopale/samples/sample04.hdoc
0 → 100755
View file @
6fa7b56c
File added
mindMapping_to_Hdoc/hdoctoopale/schema/hdoc1-container.rng
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<grammar
xmlns=
"http://relaxng.org/ns/structure/1.0"
xmlns:a=
"http://relaxng.org/ns/compatibility/annotations/1.0"
datatypeLibrary=
"http://www.w3.org/2001/XMLSchema-datatypes"
ns=
"urn:utc.fr:ics:hdoc:container"
>
<a:documentation>
This schema describes the META-INF/container.xml file for hdoc format
</a:documentation>
<a:documentation>
This schema is a derivation of http://www.idpf.org/epub/30/schema/ocf-container-30.rnc
from EPUB Open Container Format (http://www.idpf.org/epub/30/spec/epub30-ocf.html)
</a:documentation>
<start>
<element
name=
"container"
>
<attribute
name=
"version"
>
<value>
1.0
</value>
</attribute>
<element
name=
"rootfiles"
>
<element
name=
"rootfile"
>
<attribute
name=
"full-path"
>
<data
type=
"anyURI"
/>
</attribute>
<attribute
name=
"media-type"
>
<value>
text/xml
</value>
</attribute>
</element>
</element>
</element>
</start>
</grammar>
mindMapping_to_Hdoc/hdoctoopale/schema/hdoc1-xhtml.rng
0 → 100755
View file @
6fa7b56c
<?xml version="1.0" encoding="UTF-8"?>
<grammar
xmlns=
"http://relaxng.org/ns/structure/1.0"
xmlns:a=
"http://relaxng.org/ns/compatibility/annotations/1.0"
datatypeLibrary=
"http://www.w3.org/2001/XMLSchema-datatypes"
ns=
"http://www.utc.fr/ics/hdoc/xhtml"
>
<a:documentation>
This schema describes the content file for hdoc format
</a:documentation>
<a:documentation>
This schema is a restriction of XHTML (it validates XHTML
schema, if namespace is changed to http://www.w3.org/1999/xhtml)
</a:documentation>
<a:documentation>
Last update : 2014-12-04
</a:documentation>
<a:documentation>
Changes since last update :
Adding object type -> application/pdf
Adding introduction and conclusion to section header and footer
Externalizing ObjectType and VideoType (to type.rng)
</a:documentation>
<start>
<element
name=
"html"
>
<ref
name=
"Head"
/>
<ref
name=
"Body"
/>
</element>
</start>
<define
name=
"Head"
>
<element
name=
"head"
>
<!-- mandatory : document title -->
<element
name=
"title"
>
<text/>
</element>
<!-- mandatory : charset=utf-8 -->
<element
name=
"meta"
>
<attribute
name=
"charset"
>
<value>
utf-8
</value>
</attribute>
</element>
<!-- optional : hdoc source generator -->
<optional>
<element
name=
"meta"
>
<attribute
name=
"name"
>
<value>
generator
</value>
</attribute>
<attribute
name=
"content"
>
<choice>
<value>
SimpleOptim
</value>
<value>
HdocConverter/SimpleChain
</value>
<value>
SimpleChain
</value>
<value>
HdocConverter/Etherpad
</value>
<value>
HdocConverter/Opale3.4
</value>
<value>
HdocConverter/Dokiel4.0
</value>
<value>
HdocConverter/Optim1.2
</value>
<value>
HdocConverter/Topaze1.3
</value>
<value>
HdocConverter/wikipedia
</value>
<value>
HdocConverter/Wordpress
</value>
<value>
HdocConverter/OpenDocumentText
</value>
<value>
HdocConverter/LaTeX
</value>
<value>
HdocConverter/OPML
</value>
<value>
HdocConverter/DITA
</value>
</choice>
</attribute>
</element>
</optional>
<!-- optional : metadata about content ; TODO : date...-->
<zeroOrMore>
<element
name=
"meta"
>
<attribute
name=
"name"
>
<choice>
<value>
description
</value>
<value>
keywords
</value>
<value>
author
</value>
<value>
rights
</value>
<value>
date
</value>
</choice>
</attribute>
<attribute
name=
"content"
>
<text/>
</attribute>
</element>
</zeroOrMore>
</element>
</define>
<define
name=
"Body"
>
<element
name=
"body"
>
<ref
name=
"Structure"
/>
</element>
</define>
<define
name=
"Structure"
>
<oneOrMore>
<ref
name=
"Section"
/>
</oneOrMore>
</define>
<!-- Recursive and hierachical organization of the document -->
<define
name=
"Section"
>
<element
name=
"section"
>
<!-- optional typing -->
<ref
name=
"SectionType"
/>
<!-- mandatory : title (header > h1) -->
<element
name=
"header"
>
<element
name=
"h1"
>
<text/>
</element>
<optional>
<element
name=
"div"
>
<attribute
name=
"data-hdoc-type"
>
<value>
author
</value>
</attribute>
<text/>
</element>
</optional>
<optional>
<element
name=
"div"
>
<attribute
name=
"data-hdoc-type"
>
<value>
date
</value>
</attribute>
<data
type=
"date"
/>
</element>
</optional>
<optional>
<element
name=
"div"
>
<attribute
name=
"data-hdoc-type"
>
<value>
rights
</value>
</attribute>
<text/>
</element>
</optional>
<optional>
<element
name=
"div"
>
<attribute
name=
"data-hdoc-type"
>
<value>
introduction
</value>
</attribute>
<text/>
</element>
</optional>
</element>
<!-- optional content of the section-->
<optional>
<ref
name=
"Content"
/>
</optional>
<!-- optional internal sub-structrure -->
<optional>
<ref
name=
"Structure"
/>
</optional>
<!-- optional footer -->
<optional>
<element
name=
"footer"
>
<optional>
<element
name=
"div"
>
<attribute
name=
"data-hdoc-type"
>
<value>
conclusion
</value>
</attribute>
<text/>
</element>