Word DOCX - import config schema reference
Version: 0.6.3
This file controls how Word DOCX files are converted into PSML. There are a number of ways to access it for editing. For users with at least project manager rights on the server, the best option is through the document types page: Project administration menu > Template > Template configuration.
- The Word Import Schema controls the configuration file for the companion process to the Word Export Schema.
- Also see the PSML split config schema reference.
<xs:schema elementFormDefault="unqualified" version="0.6.2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xml="http://www.w3.org/XML/1998/namespace" />
<config>
The root element of the instance, <config>
is a container for the two key elements.
version provides a value that can be used for configuration management or technical support.
<xs:element name="config"> <xs:complexType> <xs:sequence> <xs:element ref="lists" minOccurs="0" maxOccurs="1" /> <xs:element ref="styles" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="version" type="xs:string" /> </xs:complexType> </xs:element>
<split>
The <main>
, <document>
and <section>
elements previously under <split>
are obsolete as of PageSeeder v6.
Importing a Word document involves two configuration files. First the DOCX document content is processed using the word-import-config.xml
, then it is split using the psml-split-config.xml
to give the final imported PSML.
For more detail, see:
<xs:element name="split"> <xs:complexType> <xs:sequence> <xs:element ref="mathml" minOccurs="0" maxOccurs="1" /> <xs:element ref="footnotes" minOccurs="0" maxOccurs="1" /> <xs:element ref="endnotes" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element>
<mathml>
Controls the processing of any MathML objects in the Word file.
select use a value of true
or false
to determine if MathML content is processed or ignored (default true
).
convert-to-mml use a value of true
or false
to determine whether MathML objects are converted to the original math ml (mml
) syntax or left as OfficeOpenXML syntax (default true
and always true
for generate-fragments
option).
output use a value of generate-files
or generate-fragments
to determine whether each MathML object is placed in a separate file, under a mathml
folder or in a fragment inside it’s own document with the path mathml/mathml-[n].psml
(default generate-fragments
, requires pso-docx version 0.7.8
or higher).
<xs:element name="mathml"> <xs:complexType> <xs:attribute name="select" type="xs:boolean" /> <xs:attribute name="convert-to-mml" type="xs:boolean" /> <xs:attribute name="output"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="generate-files" /> <xs:enumeration value="generate-fragments" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<mathml select="true" output="generate-files" convert-to-mml="true"/>
See use of:
<footnotes>
Controls the processing of Word footnote markers.
select use a value of true
or false
to determine if Word footnotes are processed or ignored (default true
).
output use a value of generate-files
or generate-fragments
to determine whether each footnote object is placed in a separate file, under a footnotes
folder or in a fragment in a footnotes/footnotes.psml
file (default generate-fragments
).
<xs:element name="footnotes"> <xs:complexType> <xs:attribute name="select" type="xs:boolean" /> <xs:attribute name="output"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="generate-files" /> <xs:enumeration value="generate-fragments" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<footnotes select="true" output="generate-files"/>
<endnotes>
Controls the processing of Word endnote markers.
select use a value of true
or false
to determine if Word endnotes are processed or ignored (default true
).
output use a value of generate-files
or generate-fragments
to determine whether each endnote object is placed in a separate file, under a endnotes
folder or in a fragment in a endnotes/endnotes.psml
file (default generate-fragments
).
<xs:element name="endnotes"> <xs:complexType> <xs:attribute name="select" type="xs:boolean" /> <xs:attribute name="output"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="generate-files" /> <xs:enumeration value="generate-fragments" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<endnotes select="true" output="generate-files"/>
<lists>
Determines how heading and list numbering is interpreted.
<xs:element name="lists"> <xs:complexType> <xs:sequence> <xs:element ref="add-numbering-to-document-titles" minOccurs="0" maxOccurs="1" /> <xs:element ref="convert-to-list-roles" minOccurs="0" maxOccurs="1" /> <xs:element ref="convert-to-numbered-paragraphs" minOccurs="0" maxOccurs="1" /> <xs:element ref="convert-manual-numbering" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element>
<add-numbering-to-document-titles>
To add numbering to the titles in the references document.
select use a value true
or false
to determine whether numbering is adding to the references document link title or whether it is not.
<xs:element name="add-numbering-to-document-titles"> <xs:complexType> <xs:attribute name="select" type="xs:boolean" /> </xs:complexType> </xs:element>
Example
<add-numbering-to-document-titles select="false"/>
See use of:
<add-numbering-to-document-titles select="true"/>
See use of:
<convert-to-list-roles>
Allows lists to contain a @role
attribute set with the value of the Word paragraph style.
select use a value of true
or false
to determine whether PSML lists inherit the name of the Word list style as a @role
or not. By default, this value is false
.
<xs:element name="convert-to-list-roles"> <xs:complexType> <xs:attribute name="select" type="xs:boolean" /> </xs:complexType> </xs:element>
Example
<convert-to-list-roles select="false" />
See use of:
lists-multilevel-list-role-false
lists-numbered-paragraphs-role-false
<convert-to-list-roles select="true" />
See use of:
lists-multilevel-list-role-true
lists-numbered-paragraphs-role-true
<convert-to-numbered-paragraphs>
Is used to control the conversion of numbered paragraph styles to numbered paragraphs or lists in PageSeeder. To convert to numbered paragraphs, the @select
attribute must be set to true
. If it contains any other value, it converts to <list>
or <nlist>
depending on the type of numbered value.
select use a value of true
or false
to determine whether numbered Word paragraph styles are converted to numbered paragraphs or lists, or whether they are not.
<xs:element name="convert-to-numbered-paragraphs"> <xs:complexType> <xs:sequence> <xs:element ref="level" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="select" type="xs:boolean" /> </xs:complexType> </xs:element>
Example
<convert-to-numbered-paragraphs select="false" />
See use of:
The GitHub example has select="false"
. Any Word styles that have numbering and are in a list, are not numbered on import.
<convert-to-numbered-paragraphs select="true" />
Using select="true"
, any Word styles, that have numbering and are in a list, have a numbering attribute applied on import.
See use of:
Numbering output as an inline label: in:
numbered-paragraphs-true-output-inline
The GitHub example has select="true"
. Only Word styles that have numbering, are in a list and that are level 1 in that list, have a numbering attribute applied on import. The number is placed inside a inline label with label name inline=level1
.
<convert-manual-numbering>
To convert non-automated numbering values that can exist in a Word document.
select use a value of true
or false
to determine whether manual numbering in the Word document is converted or whether it is not.
<xs:element name="convert-manual-numbering"> <xs:complexType> <xs:sequence> <xs:element ref="value" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:attribute name="select" type="xs:boolean" /> </xs:complexType> </xs:element>
Example
<convert-manual-numbering select="false" />
See use of:
The GitHub example has select="false"
. Any manual numbering on Word styles that are in a list, are imported as plain text.
<convert-manual-numbering select="true" />
Using select="true"
, any manual numbering on Word styles is imported.
See use of:
<autonumbering>
in manual-numbering-true-autonumbering
The GitHub example has select="true"
. Any manual numbering on Word styles that are in a list, are imported according to the search match
regular expressions specified in the <value>
elements.
The first match
search is for: the word “Schedule” followed by non-breaking space (indicated by the HTML format code  ), followed by any number inclusive of 0 to 9 occurring one or more times. If found, the text is imported into a paragraph with a numbered
attribute.
For example: <para numbered="true">
.
<inline>
in manual-numbering-true-inline
Using select="true"
. Any manual numbering on Word styles that are in a list, are imported according to the search match
regular expressions specified in the <value>
elements.
The third match
search is for: zero or one character space followed by any number inclusive of 0 to 9 occurring one or more times then followed by a single character space. If found, the text is imported into an inline label with label name numbering-subdivision
at the start of a paragraph.
For example, <para><inline label="numbering-subdivision">1 </inline>
<prefix>
in manual-numbering-true-prefix
Using select="true"
. Any manual numbering on Word styles that are in a list, are imported according to the search match
regular expressions specified in the <value>
elements.
The first match
search is for: the word “Schedule” followed by non-breaking space (indicated by the HTML format code  ), followed by any number inclusive of 0 to 9 occurring one or more times. If found, the text is imported into a paragraph with the found text as the value of a prefix
attribute.
For example: <para prefix="Schedule 1">
<inline>
and <prefix>
in manual-numbering-true-prefix-inline
Using select="true"
. Any manual numbering on Word styles that are in a list, are imported according to the search match
regular expressions specified in the <value>
elements.
The first and second match
searches, if found, the text is imported into paragraphs with the found text as the value of a prefix
attribute.
For example, <para prefix="Schedule 1">, <para prefix="Part 1">
The third, fourth and fifth match
searches, if found, the text is imported into inline labels at the start of a paragraph.
For example:
<para><inline label="numbering-subdivision">1 </inline>,
,
<para><inline label="numbering-firstlevel"> (5A)</inline>
<para><inline label="numbering-secondlevel"> (a)</inline>
<level>
Controls the processing of each level of paragraph.
value use 1
to 6
to correspond to level of the paragraph.
output use prefix
or text
to convert the number from the Word paragraph to a PSML prefix or text, use numbering
to create numbered paragraphs in PSML, use [inline=[label]
to wrap the number in a PSML inline label, label characters are restricted to [a-zA-Z0-9_\-].
<xs:element name="level"> <xs:complexType> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="1" /> <xs:maxInclusive value="6" /> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="output"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="numbering |prefix |inline=[a-zA-Z0-9_\-]+ |text" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<lists> <convert-to-numbered-paragraphs select="true"> <level value="1" output="prefix"/> <level value="2" output="text"/> <level value="3" output="prefix"/> <level value="4" output="numbering"/> <level value="5" output="numbering"/> <level value="6" output="inline=level6"/> </convert-to-numbered-paragraphs> </lists>
See use of:
@output="inline=[label]
in:
numbered-paragraphs-true-output-inline
The GitHub example has <convert-to-numbered-paragraphs select="true">
. Any Word styles, that are in a list and that have numbering, are imported.
The Word style that is the first level in the Word list, specified by level value="1"
is imported as a paragraph and it has an attribute indent="1"
applied.
The number on the Word style is imported, specified by the value of attribute output
, into an inline label, with label name level1
.
For example, <para indent="1"><inline label="level1">1) </inline>List item 1</para>
numbered-paragraphs-true-multilevel-output-inline
output="prefix"
in:
numbered-paragraphs-true-output-prefix
numbered-paragraphs-true-multilevel-output-prefix
@output="numbering"
in:
numbered-paragraphs-true-output-numbering
numbered-paragraphs-true-multilevel-output-numbering
output="text"
in:
numbered-paragraphs-true-output-text
numbered-paragraphs-true-multilevel-output-text
@output="prefix "
and @output="numbering"
in:
numbered-paragraphs-true-multilevel-output-numbering-prefix
@output="text"
and @output="prefix"
in:
numbered-paragraphs-true-multilevel-output-text-prefix
multiple @output
in:
numbered-paragraphs-true-multilevel-output-numbering-text-inline-prefix
<value>
Determines the paragraph ordinal.
prefix use "prefix"
to generate a prefix with the value of the current auto-numbering or manual numbering value for each of the Word numbered paragraphs.
autonumbering [Insert description]
match use a regular expression to mark up text in the Word document.
<xs:element name="value"> <xs:complexType> <xs:sequence> <xs:element ref="inline" minOccurs="0" maxOccurs="1" /> <xs:element name="prefix" minOccurs="0" maxOccurs="1" /> <xs:element name="autonumbering" minOccurs="0" maxOccurs="1" /> </xs:sequence> <xs:attribute name="match" type="xs:string" /> </xs:complexType> </xs:element>
<inline>
Used to mark up content within a block of text—like character style in Word documents.
label use characters restricted to [a-zA-Z0-9_\-].
<xs:element name="inline"> <xs:complexType> <xs:attribute name="label" type="xs:string" /> </xs:complexType> </xs:element>
Example
<convert-manual-numbering select="true"> <value match="^[\(|\[|\{][a-z]+[\)|\]|\}]"> <inline label="numbering-lowercase" /> </value> <value match="^[\(|\[|\{][A-Z]+[\)|\]|\}]"> <prefix/> </value> <value match="^[\(|\[|\{][ivx]+[\)|\]|\}]"> <list role="numbering-roman"/> </value> <value match="Part [A-Z0-9]+"> <prefix /> </value> <value match="Note:\s*"> <prefix /> </value> <value match="\s*[0-9]+[A-Z]*$"> <prefix /> </value> </convert-manual-numbering>
See use of:
<autonumbering>
Ancestor is <lists>
. Parent is <convert-manual-numbering select="true">
.
Example
<config> <lists> <convert-manual-numbering select="true"> <value match="Chapter [0-9]+"> <autonumbering /> </value> </convert-manual-numbering> </lists>
See use of:
manual-numbering-true-autonumbering
<prefix>
Ancestor is <lists>
. Parent is <convert-manual-numbering select="true"
>.
Example
<config> <lists> <convert-manual-numbering select="true"> <value match="Chapter [0-9]+"> <prefix /> </value> </convert-manual-numbering> </lists>
See use of:
<styles>
Controls how styles from Word are translated to PSML.
<xs:element name="styles"> <xs:complexType> <xs:sequence> <xs:element ref="ignore" minOccurs="0" maxOccurs="1" /> <xs:element ref="default" minOccurs="0" maxOccurs="1" /> <xs:element ref="wordstyle" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element>
<ignore>
Determines which content is not processed. For example, the Word Table of Contents paragraphs can often be discarded.
<xs:element name="ignore"> <xs:complexType> <xs:sequence> <xs:element ref="wordstyle" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element>
Example
<ignore> <wordstyle value="TOC1" /> <wordstyle value="TOC2" /> <wordstyle value="TOC3" /> <wordstyle value="TOC4" /> </ignore>
See use of:
ignore-styles-toc-paragraph-styles
ignore-styles-body-text-paragraph-style
ignore-styles-one-paragraph-style
ignore-styles-multiple-paragraph-styles
<default>
Contains the settings for general transformations of docx to PSML.
<xs:element name="default"> <xs:complexType> <xs:sequence> <xs:element ref="paragraphStyles" minOccurs="0" maxOccurs="1" /> <xs:element ref="characterStyles" minOccurs="0" maxOccurs="1" /> <xs:element ref="smart-tag" minOccurs="0" maxOccurs="1" /> <xs:element ref="references" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element>
<paragraphStyles>
Defines a mapping for a paragraph style not mapped by <wordstyle>
or <lists>.
To get the style ID
, Word strips underscores and spaces from the style name but preserves hyphens.
value para
transforms all un-mapped Word paragraph styles to a PSML <para>
element.
block
transforms all un-mapped Word paragraph styles to a PSML <block>
element with a label equal to the Word paragraph style ID
.
<xs:element name="paragraphStyles"> <xs:complexType> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="para" /> <xs:enumeration value="block" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<paragraphStyles value="block" />
See use of:
<paragraphStyles value="para" />
See use of:
<characterStyles>
Defines general rule for any Word character style not mapped with <wordstyle>
.
value none
– strips the markup for un-mapped Word character styles.
inline
– transforms un-mapped Word character styles to a PSML <inline>
element with a label equal to the Word character style ID.
<xs:element name="characterStyles"> <xs:complexType> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="inline" /> <xs:enumeration value="none" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<characterStyles value="none" />
See use of:
<characterStyles value="inline" />
See use of:
default-character-style-inline
<smart-tag>
Word smart tag information can be either discarded or captured in PageSeeder as an inline label, with a value equal to that of the smart tag. To do this, the @keep
attribute must be set to true
. With any other value, the smart-tag markup is discarded.
keep use a value of true
or false
to determine whether smart tags are captured as inline labels, or whether they are not.
<xs:element name="smart-tag"> <xs:complexType> <xs:attribute name="keep" type="xs:boolean" /> </xs:complexType> </xs:element>
Example
<smart-tag keep="false" />
See use of:
<smart-tag keep="true" />
See use of:
<references>
This element sets whether internal references in the DOCX are imported as PSML <link>
or <xref>
elements. This requires pso-docx v0.8.3 or higher.
psmlelement attribute can have values link
or xref
(default is xref
). The link
option also imports all bookmarks as <anchor>
elements.
<xs:element name="references"> <xs:complexType> <xs:attribute name="psmlelement"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="link" /> <xs:enumeration value="xref" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<references psmlelement="link" />
See use of:
<wordstyle>
These rules transform Word paragraph or character styles into PSML elements.
value use the Word style ID for the Word paragraph style. Used where the ancestor is <ignore>
.
name use the Word style ID for the Word paragraph style.
table use where the ancestor is <styles>
.
Use only when @psmlelement="caption"
Use value default
when it applies to all tables
Or use the value of a specific table style ID.
psmlelement use heading
, para
, block
, preformat
, caption
, bold
, inline
, italic
,monospace
, underline
.
<xs:element name="wordstyle"> <xs:complexType> <xs:all> <xs:element ref="label" minOccurs="0" maxOccurs="1" /> <xs:element ref="level" minOccurs="0" maxOccurs="1" /> <xs:element ref="numbering" minOccurs="0" maxOccurs="1" /> <xs:element ref="indent" minOccurs="0" maxOccurs="1" /> </xs:all> <xs:attribute name="value" type="xs:string" /> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="table" type="xs:string" /> <xs:attribute name="psmlelement"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="para" /> <xs:enumeration value="heading" /> <xs:enumeration value="block" /> <xs:enumeration value="monospace" /> <xs:enumeration value="preformat" /> <xs:enumeration value="caption" /> <xs:enumeration value="bold" /> <xs:enumeration value="inline" /> <xs:enumeration value="italic" /> <xs:enumeration value="monospace" /> <xs:enumeration value="underline" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Examples
psmlelement="heading"
<wordstyle name="Heading1" psmlelement="heading"/>
See use of:
headings-multiple-paragraph-styles
psmlelement="para"
<wordstyle name="Heading1" psmlelement="para"/>
See use of:
para-multiple-paragraph-styles
para-one-paragraph-style-with-block
para-one-paragraph-style-with-inline
para-multiple-with-numbering-inline
para-multiple-with-numbering-prefix
para-multiple-with-numbering-text
para-multiple-with-numbering-numbering
para-multiple-with-numbering-prefix-numbering-inline
psmlelement="block"
<wordstyle name="Heading1" psmlelement="block"> <label value="heading1block"/> </wordstyle>
See use of:
block-multiple-paragraph-styles
Captions attached to Images
The default conversion of the default Word paragraph style ‘Caption’, when attached to an Image, is into a psmlelement="block"
.
Example
<wordstyle name="Caption" psmlelement="block"> <label value="Caption" /> </wordstyle>
See use of:
psmlelement="preformat"
<wordstyle name="Heading1" psmlelement="preformat" />
See use of:
preformat-multi-paragraph-style
psmlelement="caption"
Captions attached to Tables
psmlelement="caption"
See use of:
<wordstyle name="Caption" psmlelement="caption" table="default"/>
- PSML result when applied to a Word Default table style (
w:styleId="TableGrid"
):
<block label="Caption">Table 1</block> <table role="TableGrid">
See use of:
<wordstyle name="Caption" psmlelement="caption" table="tableYellow"/>
- PSML result when applied to a Word Custom table style (for example,
w:styleId="tableYellow"
):
<table role="tableYellow"> <caption>Table 2 table with caption</caption>
psmlelement="bold"
This requires pso-docx v1.1.0 or higher.
<wordstyle name="Strong" psmlelement="bold">
psmlelement="inline"
<wordstyle name="Emphasis" psmlelement="inline"> <label value="emphasisinline"/> </wordstyle>
See use of:
psmlelement="italic"
This requires pso-docx v1.1.0 or higher.
<wordstyle name="Emphasis" psmlelement="italic">
psmlelement="monospace"
<wordstyle name="Emphasis" psmlelement="monospace" />
See use of:
monospace-multi-character-style
monospace-multi-paragraph-style
psmlelement="underline"
This requires pso-docx v1.1.0 or higher.
<wordstyle name="IntenseEmphasis" psmlelement="underline">
<label>
type use a value of block
or inline
to determine whether text is surrounded by a block label or an inline label.
value use a value of [valid label name]
, restricted to these characters [a-zA-Z0-9_\-]
.
<xs:element name="label"> <xs:complexType mixed="true"> <xs:attribute name="type"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="block" /> <xs:enumeration value="inline" /> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9_\-]+" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
When ancestor is <styles>
:
<label type="block" value="chapter">
headings-one-paragraph-style-with-block
<label type="inline" value="part_num">
headings-one-paragraph-style-with-inline
<numbering>
Supports a range of options for numbering headings and paragraphs.
select use true
or false
to determine if numbering is applied or whether it is not.
value use numbering
(add @numbered="true"
), use inline
to wrap number in an inline label specified by nested <label value="[valid label name]">
element, use text
to include number in paragraph text, use prefix
to insert number in @prefix
attribute.
<xs:element name="numbering"> <xs:complexType> <xs:sequence> <xs:element ref="label" minOccurs="0" /> </xs:sequence> <xs:attribute name="select" type="xs:boolean" /> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="numbering" /> <xs:enumeration value="inline" /> <xs:enumeration value="text" /> <xs:enumeration value="prefix" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<numbering select="false" />
<numbering select="true" value="numbering" numbered="true"/>
headings-with-numbering-numbering
headings-multiple-with-numbering-numbering
<numbering select="true" value="inline"/>
headings-with-numbering-inline
headings-multiple-with-numbering-inline
<numbering select="true" value="text"/>
headings-multiple-with-numbering-text
<numbering select="true" value="prefix"/>
headings-with-numbering-prefix
headings-multiple-with-numbering-prefix
Use of multiple numbering @value
:
headings-multiple-with-numbering-prefix-numbering-inline
<indent>
Determines position of the paragraph in the heirarchy.
value values of 1
to 6
<xs:element name="indent"> <xs:complexType> <xs:attribute name="value"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="1" /> <xs:maxInclusive value="6" /> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
Example
<indent value="2" />