Skip to content

Commit

Permalink
Fixes #140: Set up new markup for doc properties, implemented core pr…
Browse files Browse the repository at this point in the history
…o… (#142)

* Issue 140: Set up new markup for doc properties, implemented core properties handling
---------

Co-authored-by: eliot.kimber <eliot.kimber@servicenow.com>
  • Loading branch information
drmacro and ekimbernow authored Apr 29, 2024
1 parent 66b8af5 commit d2c7b6d
Show file tree
Hide file tree
Showing 6 changed files with 587 additions and 11 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
hs_err_pid*
.settings/org.eclipse.jdt.core.prefs
.settings/org.eclipse.m2e.core.prefs
.settings/
.classpath
.project
*.versionsBackup
Expand Down
114 changes: 114 additions & 0 deletions src/main/doctypes/simplewpml/simplewpml-base.rng
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,127 @@
<a:documentation>
<p>Root of a document. Represents a complete word processing document.</p>
</a:documentation>
<optional>
<ref name="document-properties"/>
</optional>
<optional>
<ref name="page-sequence-properties"/>
</optional>
<ref name="body"/>
</element>
</define>

<define name="document-properties">
<element name="document-properties" ns="urn:ns:wordinator:simplewpml">
<a:documentation>
<p>Document properties, as reflected in the Word Properties dialog. For OOXML,
these come from the core properties defined in ECMA-376, Part 2, Open Packaging
Conventions, and the extended properties defined in Part 1, section 22.2 Extended Properties.</p>
</a:documentation>
<optional>
<ref name="core-properties"/>
</optional>
<optional>
<ref name="extended-properties"/>
</optional>
<optional>
<ref name="custom-properties"/>
</optional>
</element>
</define>

<define name="core-properties">
<element name="core-properties" ns="urn:ns:wordinator:simplewpml">
<a:documentation>
<p>The core properties defined in ECMA-376, Part 2, Open Packaging
Conventions.</p>
<p>The pattern allows any number of repetitions but each element should only occur once.
If an element is repeated, the last one specified will be used.</p>
</a:documentation>
<zeroOrMore>
<choice>
<!-- core properties -->
<optional><element name="category "><text/></element></optional>
<optional><element name="contentStatus"><text/></element></optional>
<optional><element name="created "><text/></element></optional>
<optional><element name="creator"><text/></element></optional>
<optional><element name="description"><text/></element></optional>
<optional><element name="identifier"><text/></element></optional>
<optional><element name="keywords"><text/></element></optional>
<optional><element name="language"><text/></element></optional>
<optional><element name="lastModifiedBy"><text/></element></optional>
<optional><element name="lastPrinted"><text/></element></optional>
<optional><element name="modified"><text/></element></optional>
<optional><element name="revision"><text/></element></optional>
<optional><element name="title"><text/></element></optional>
<optional><element name="version"><text/></element></optional>

</choice>
</zeroOrMore>
</element>
</define>

<define name="extended-properties">
<element name="extended-properties" ns="urn:ns:wordinator:simplewpml">
<a:documentation>
<p>The extended properties defined in Part 1, section 22.2 Extended Properties.</p>
<p>The pattern allows any number of repetitions but each element should only occur once.
If an element is repeated, the last one specified will be used.</p>
</a:documentation>
<zeroOrMore>
<choice>
<!-- Custom properties: -->
<optional><element name="Application"><text/></element></optional>
<optional><element name="AppVersion"><text/></element></optional>
<optional><element name="Characters"><text/></element></optional>
<optional><element name="CharactersWithSpaces"><text/></element></optional>
<optional><element name="Company"><text/></element></optional>
<optional><element name="DigSig"><text/></element></optional>
<optional><element name="DocSecurity"><text/></element></optional>
<optional><element name="HeadingPairs"><text/></element></optional>
<optional><element name="HiddenSlides"><text/></element></optional>
<optional><element name="HLinks"><text/></element></optional>
<optional><element name="HyperlinkBase"><text/></element></optional>
<optional><element name="HyperlinksChanged"><text/></element></optional>
<optional><element name="Lines"><text/></element></optional>
<optional><element name="LinksUpToDate"><text/></element></optional>
<optional><element name="Manager"><text/></element></optional>
<optional><element name="MMClips"><text/></element></optional>
<optional><element name="Notes"><text/></element></optional>
<optional><element name="Paragraphs"><text/></element></optional>
<optional><element name="PresentationFormat"><text/></element></optional>
<optional><element name="ScaleCrop"><text/></element></optional>
<optional><element name="SharedDoc"><text/></element></optional>
<optional><element name="Slides"><text/></element></optional>
<optional><element name="Template"><text/><text/></element></optional>
<optional><element name="TitlesOfParts"><text/></element></optional>
<optional><element name="TotalTime"><text/></element></optional>
<optional><element name="Words"><text/></element></optional>
</choice>
</zeroOrMore>
</element>
</define>

<define name="custom-properties">
<element name="custom-properties" ns="urn:ns:wordinator:simplewpml">
<a:documentation>
<p>Custom properties</p>
<p>Custom properties are arbitrary name-value pairs.</p>
</a:documentation>
<zeroOrMore>
<element name="property" ns="urn:ns:wordinator:simplewpml">
<attribute name="name">
<a:documentation>
<p>The name of the property. May contain spaces.</p>
</a:documentation>
</attribute>
<text></text>
</element>
</zeroOrMore>
</element>
</define>


<define name="page-sequence-properties">
<element name="page-sequence-properties" ns="urn:ns:wordinator:simplewpml">
<a:documentation>
Expand Down
26 changes: 15 additions & 11 deletions src/main/java/org/wordinator/xml2docx/generator/DocxConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -123,22 +123,26 @@ public final class DocxConstants {
// Elements:
public static final QName QNAME_COLS_ELEM = new QName(SIMPLE_WP_NS, "cols");
public static final QName QNAME_COL_ELEM = new QName(SIMPLE_WP_NS, "col");
public static final QName QNAME_FIELDRESULTS_ELEM = new QName(SIMPLE_WP_NS, "fieldResults");
public static final QName QNAME_FOOTNOTEREF_ELEM = new QName(OO_WPML_NS, "footnoteRef");
public static final QName QNAME_FOOTNOTEREFEREMCE_ELEM = new QName(OO_WPML_NS, "footnoteReference");
public static final QName QNAME_INSTRUCTIONTEXT_ELEM = new QName(SIMPLE_WP_NS, "instructionText");
public static final QName QNAME_P_ELEM = new QName(SIMPLE_WP_NS, "p");
public static final QName QNAME_W_P_ELEM = new QName(OO_WPML_NS, "p");
public static final QName QNAME_R_ELEM = new QName(OO_WPML_NS, "r");
public static final QName QNAME_ROW_ELEM = new QName(SIMPLE_WP_NS, "row");
public static final QName QNAME_T_ELEM = new QName(OO_WPML_NS, "t"); // w:t -- text element
public static final QName QNAME_TABLE_ELEM = new QName(SIMPLE_WP_NS, "table"); // w:table -- table element
public static final QName QNAME_CORE_PROPERTIES_ELEM = new QName(SIMPLE_WP_NS, "core-properties");
public static final QName QNAME_CUSTOM_PROPERTIES_ELEM = new QName(SIMPLE_WP_NS, "custom-properties");
public static final QName QNAME_DOCUMENT_PROPERTIES_ELEM = new QName(SIMPLE_WP_NS, "document-properties");
public static final QName QNAME_EXTENDED_PROPERTIES_ELEM = new QName(SIMPLE_WP_NS, "extended-properties");
public static final QName QNAME_FIELDRESULTS_ELEM = new QName(SIMPLE_WP_NS, "fieldResults");
public static final QName QNAME_FOOTNOTEREF_ELEM = new QName(OO_WPML_NS, "footnoteRef");
public static final QName QNAME_FOOTNOTEREFEREMCE_ELEM = new QName(OO_WPML_NS, "footnoteReference");
public static final QName QNAME_INSTRUCTIONTEXT_ELEM = new QName(SIMPLE_WP_NS, "instructionText");
public static final QName QNAME_P_ELEM = new QName(SIMPLE_WP_NS, "p");
public static final QName QNAME_W_P_ELEM = new QName(OO_WPML_NS, "p");
public static final QName QNAME_R_ELEM = new QName(OO_WPML_NS, "r");
public static final QName QNAME_ROW_ELEM = new QName(SIMPLE_WP_NS, "row");
public static final QName QNAME_T_ELEM = new QName(OO_WPML_NS, "t"); // w:t -- text element
public static final QName QNAME_TABLE_ELEM = new QName(SIMPLE_WP_NS, "table"); // w:table -- table element
public static final QName QNAME_THEAD_ELEM = new QName(SIMPLE_WP_NS, "thead");
public static final QName QNAME_TBODY_ELEM = new QName(SIMPLE_WP_NS, "tbody");
public static final QName QNAME_TR_ELEM = new QName(SIMPLE_WP_NS, "tr");
public static final QName QNAME_TD_ELEM = new QName(SIMPLE_WP_NS, "td");
public static final QName QNAME_VSPAN_ELEM = new QName(SIMPLE_WP_NS, "vspan");

public static final String PROPERTY_VALUE_CONTINUOUS = "continuous";
public static final String PROPERTY_PAGEBREAK = "pagebreak";
public static final QName QNAME_TCPR_ELEM = new QName(OO_WPML_NS, "tcPr");
Expand Down
Loading

0 comments on commit d2c7b6d

Please sign in to comment.