├── .gitignore ├── README.md ├── concept-papers ├── out │ ├── html │ │ └── xmlprague-meeting.html │ └── pdf │ │ └── xmlprague-meeting.pdf └── xmlprague-meeting.xml ├── index.html ├── samples ├── SqfOxyUtil │ ├── README.md │ └── java │ │ ├── .classpath │ │ ├── .gitignore │ │ ├── .project │ │ ├── SqfOxyUtil.jar │ │ ├── build.xml │ │ └── src │ │ └── org │ │ └── sqf │ │ └── oxy │ │ └── util │ │ └── StaticFct.java ├── SqfUtil │ ├── README.md │ ├── java │ │ ├── .classpath │ │ ├── .gitignore │ │ ├── .project │ │ ├── SqfOxyUtil.jar │ │ ├── build.xml │ │ └── src │ │ │ └── org │ │ │ └── sqf │ │ │ └── util │ │ │ └── StaticFct.java │ ├── loadDocRaw-test │ │ ├── loadDocRaw-test.xml │ │ ├── loadDocRaw-test.xsd │ │ └── loadDocRaw-test.xsl │ ├── sqfu-copy-of-test │ │ ├── sqfu-copy-of-test.xml │ │ ├── sqfu-copy-of-test.xsd │ │ └── sqfu-copy-of-test.xsl │ └── sqfu-copy-of.xsl ├── add-id │ ├── README.md │ ├── add-id.dita │ └── add-id.sch ├── correct-spacing │ ├── README.md │ ├── correct-spacing.dita │ ├── correct-spacing.sch │ ├── correct-spacing.xsl │ └── topic-with-space-preserve.rng ├── editingRules-DITA │ ├── OutputCodedeblock.xml │ ├── README.md │ ├── Schemas │ │ ├── flowersEditingConsistencyRules.sch │ │ ├── flowersOutputRules.sch │ │ ├── flowersSimpleStylingRules.sch │ │ └── flowersStructureRules.sch │ ├── flowersEditingConsistencyRules.xml │ ├── flowersSimpleStylingRules.xml │ └── flowersStructureRules.xml ├── handle-dita-attributes │ ├── README.md │ ├── handle-dita-attributes.dita │ ├── handle-dita-attributes.sch │ └── handle-dita-attributes.xsl ├── handle-docbook-xincludes │ ├── README.md │ ├── child.xml │ ├── handle-docbook-xincludes.sch │ ├── handle-docbook-xincludes.xml │ └── handle-docbook-xincludes.xsl ├── html-dialog │ ├── README.md │ ├── html-dialog-sch.xpr │ ├── html-dialog-sch.xsl │ ├── html-dialog.sch │ ├── html-dialog.xml │ └── saxon-xsltgui-config.xml ├── ignore-warning │ ├── README.md │ ├── ignore-warning.dita │ └── ignore-warning.sch ├── localization │ ├── java-properties-dynamic │ │ ├── dog.sch │ │ ├── dog_de.xml │ │ └── dog_fr.xml │ ├── java-properties │ │ ├── dog.sch │ │ ├── dog_de.xml │ │ └── dog_fr.xml │ ├── sch-diagnostic-dynamic │ │ └── dog.sch │ └── sch-diagnostic │ │ └── dog.sch ├── merge-dita-sl │ ├── README.md │ ├── merge-dita-sl.dita │ └── merge-dita-sl.sch ├── outsource-dita-topics │ ├── README.md │ ├── oursource-dita-topics-dita-semia.dita │ ├── oursource-dita-topics-dita-semia.xsd │ ├── outsource-dita-topics.dita │ ├── outsource-dita-topics.ditamap │ ├── outsource-dita-topics.sch │ └── outsource-dita-topics.xsl ├── outsource-docbook-chapters-gui │ ├── README.md │ ├── oursourced-chapter.xml │ ├── outsource-docbook-chapters-gui.sch │ ├── outsource-docbook-chapters-gui.xml │ └── outsource-docbook-chapters-gui.xsl ├── outsource-docbook-chapters │ ├── README.md │ ├── oursourced-chapter.xml │ ├── outsource-docbook-chapters.sch │ ├── outsource-docbook-chapters.xml │ └── outsource-docbook-chapters.xsl ├── register-key-oxy │ ├── README.md │ ├── key-list.xml │ ├── register-key.css │ ├── register-key.sch │ └── register-key.xml ├── register-key │ ├── README.md │ ├── key-list.xml │ ├── register-key.sch │ └── register-key.xml ├── sqf-samples.xpr └── user-entry │ ├── README.md │ ├── user-entry.sch │ └── user-entry.xml ├── schemas ├── iso-schematron.xsd ├── schematron-quickFix.xsd ├── sqf.sch └── xml.xsd └── spec ├── SQFSpec.html ├── SQFSpec.xml ├── SQFSpec_Elements.xml └── img ├── svg ├── sqf_activityBase.svg ├── sqf_activityElements.svg ├── sqf_activityManipulate.svg ├── sqf_add.svg ├── sqf_call-fix.svg ├── sqf_copy-of.svg ├── sqf_delete.svg ├── sqf_description.svg ├── sqf_fix.svg ├── sqf_fixElements.svg ├── sqf_fixes.svg ├── sqf_foreign-element.svg ├── sqf_foreign.svg ├── sqf_group.svg ├── sqf_keep.svg ├── sqf_messageAttributes.svg ├── sqf_p.svg ├── sqf_param.svg ├── sqf_parameterAttributes.svg ├── sqf_refAttribute.svg ├── sqf_replace.svg ├── sqf_rootAttributes.svg ├── sqf_stringReplace.svg ├── sqf_templateElements.svg ├── sqf_title.svg ├── sqf_user-entry.svg └── sqf_with-param.svg └── workflow.png /.gitignore: -------------------------------------------------------------------------------- 1 | samples/SqfOxyUtil/java/MANIFEST.MF 2 | samples/SqfUtil/java/MANIFEST.MF 3 | samples/outsource-docbook-chapters/another-chapter.xml 4 | samples/outsource-docbook-chapters/one-chapter.xml 5 | samples/outsource-dita-topics/child-topic.dita 6 | samples/outsource-dita-topics/description.dita 7 | samples/outsource-dita-topics/dosomething.dita 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Schematron Quick Fix (SQF) 2 | 3 | Schematron QuickFix is an extension of the 4 | [ISO Schematron](http://schematron.com/) standard. 5 | 6 | This repository is for editing drafts and discussion of the 7 | [Schematron Quick Fixes](spec/SQFSpec.html) specification. 8 | 9 | Latest published version: http://schematron-quickfix.github.io/sqf 10 | 11 | Latest editor's draft: http://schematron-quickfix.github.io/sqf/spec/SQFSpec.html 12 | 13 | Please discuss your issues in this github project or on the 14 | [public mailing list](mailto:public-quickfix@w3.org) of the w3c commutiy group 15 | [Quick-fix support for XML](https://www.w3.org/community/quickfix/) 16 | 17 | Schematron QuickFix - XML Prague Presentation 18 | 19 | [![Schematron QuickFix – a simple language to specify the actions that will be used to fix the Schematron detected issues](https://img.youtube.com/vi/RLMc0B0di5s/1.jpg "Schematron QuickFix - XML Prague Presentation")](https://www.youtube.com/watch?v=RLMc0B0di5s) 20 | 21 | 22 | Sample files: https://github.com/schematron-quickfix/sqf/tree/master/samples 23 | -------------------------------------------------------------------------------- /concept-papers/out/html/xmlprague-meeting.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Schematron QuickFix concept session during XMLPrague 2016

Schematron QuickFix concept session during XMLPrague 2016

Heino Schmull

pagina GmbH

Nico Kutscherauer

data2type GmbH

Octavian Nadolu

oXygen XML Editor

Patrik Stellmann

GDV Dienstleistungs-GmbH & Co. KG

Abstract

During the XMLPrague, we discussed in a small group current issues of the Schematron QuickFix language to prepare the second draft version of the specification.

In the following we want to update you by a summary of the discussed issues and our conclusions.

This article is based on some short notes which were made during the 4 | session.


Table of Contents

Setting
Participant List (Alphabetical Order)
Issue Overview
Details
Dynamic fixes
Call fix elements
Localisation concepts
Nested processing of nodes by Activity Elements
Additional substitution for common XSLT elements

Setting

Participant List (Alphabetical Order)

  • Heino Schmull

  • 5 | Nico Kutscherauer

  • 6 | Octavian Nadolu

  • 7 | Patrik Stellmann

Details

Dynamic fixes

Conclusion

Everyone was satisfied by using Patrik's example.

Short summary:

  • Dynamic fixes will be created by sqf:fix elements with an use-for-each attribute.

  • The use-for-each attribute has an XPath as value. For each return value one fix should be generated.

  • Context is still the same, with $sqf:current (build-in 8 | variable) 9 | you can have access to the current returned value.

Call fix elements

Issues Summary

The current problem was already described in this issue: https://github.com/schematron-quickfix/sqf/issues/2

Conclusion

  • sqf:description is optional 10 | and 11 | unbounded, but the language (@xml:lang) 12 | needs to be unique in one sqf:fix element

    (if possible, auto completion should add it automatically when 13 | creating sqf:fix elements)

  • The sqf:fix must have a description, if there is no or 14 | more than one sqf:call-fix with a description 15 | inside.

  • If you have exactly one sqf:call-fix and no sqf:description element, the called fix must have a sqf:description or inherit one.

  • The languages of the descriptions of the called fix and the calling fix could be different:

    Use case: Use sqf:call-fix to add a different language to an existing fix.

Open Issues

  1. This concept ignores the localisation proposal below.

  2. XSD has limitations, so the schematron-quickfix.xsd would be very lax. The order of the sqf:fix content would be checked by Schematron (sqf.sch). One suggestion was, to switch the basic schema (schematron-quickfix.xsd) to RELAX NG

Localisation concepts

Issues Summary

  • The concept above includes a localisation concept:

    • Multiple descriptions which have to be in different languages.

    • Concept for adding a description to an existing fix.

  • There is no concept for referring to descriptions, which are stored in an external file (library).

Conclusion

There was no final concept for this issue, just a couple of proposals:

  • Use Schematron localisation concept.

    • Add @diagnostic to sqf:title and sqf:p.

    • Remove the @xml:lang from the sqf:description.

    • Add @diagnostic to sqf:description with maybe multiple ids for localisation.

    • Multiple sqf:title with @xml:lang.

    • Only one sqf:description per sqf:fix element.

    Main goal would be to have all 16 | sqf:title/sqf:p in one external 17 | document.

  • Design an own referencing concept for descriptions.

    • Something like sqf:diagnostic, but there was no further discussion about that.

  • Allow to specify global descriptions and refer them.

    • Allow sqf:description in sqf:fixes.

    • Add ref and id attribute to sqf:description.

    • An empty sqf:description element with a ref attribute refers to a global sch:description element with an id attribute.

Open Issues

Nested processing of nodes by Activity Elements

Issue Summary

The first question was after a use case for the sqf:keep element:

The following example shows an Activity Element, which transforms all child elements of an specific namespace in the NULL namespace:

<sqf:replace match=".//sqf:*" target="{local-name()}" node-type="element">
18 |     <sqf:keep/>
19 | </sqf:replace>

Conclusion

  • The group agreed, that this is a reasonable use case of sqf:keep and it is impossible to do this with other SQF structures.

  • But because this is a very special case, we proposed to remove the sqf:keep element from the specification.

  • The use cases are also realizable by embedded XSLT.

  • Opened a new issue to discuss this https://github.com/schematron-quickfix/sqf/issues/14

Additional substitution for common XSLT elements

Issue Summary

  • The issue resulted by removing the sqf:keep element.

  • It was noticed, that there is a huge usage of the xsl:copy-of element (instead of sqf:keep).

Conclusion

  • Introduction of a sqf:copy-of element, because it (xsl:copy-of) will be used really often to copy existing nodes.

  • For non-XSLT user, it is more understandable, if he don't have to change the namespace to copy nodes (like xsl:value-of -> sch:value-of).

  • No default for the select attribute, because there are two reasonable options (. and node()).

Open Issues

This issue popped up, after the session: https://github.com/schematron-quickfix/sqf/issues/9

-------------------------------------------------------------------------------- /concept-papers/out/pdf/xmlprague-meeting.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schematron-quickfix/sqf/bdbd92956e83ac4576d816ef246bb4cbdfa82886/concept-papers/out/pdf/xmlprague-meeting.pdf -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schematron-quickfix/sqf/bdbd92956e83ac4576d816ef246bb4cbdfa82886/index.html -------------------------------------------------------------------------------- /samples/SqfOxyUtil/README.md: -------------------------------------------------------------------------------- 1 | # SQF Oxygen Utility 2 | 3 | This is a java library for some oXygen specific utility to be used by different SQF samples. 4 | The library java/SqfOxyUtil needs to be places in the oXygen/lib folder so Saxon can access it. 5 | After copying the file oXygen needs to be restarted. -------------------------------------------------------------------------------- /samples/SqfOxyUtil/java/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/SqfOxyUtil/java/.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | -------------------------------------------------------------------------------- /samples/SqfOxyUtil/java/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SqfOxyUtil 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /samples/SqfOxyUtil/java/SqfOxyUtil.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schematron-quickfix/sqf/bdbd92956e83ac4576d816ef246bb4cbdfa82886/samples/SqfOxyUtil/java/SqfOxyUtil.jar -------------------------------------------------------------------------------- /samples/SqfOxyUtil/java/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /samples/SqfOxyUtil/java/src/org/sqf/oxy/util/StaticFct.java: -------------------------------------------------------------------------------- 1 | package org.sqf.oxy.util; 2 | 3 | import ro.sync.exml.workspace.api.PluginWorkspace; 4 | import ro.sync.exml.workspace.api.PluginWorkspaceProvider; 5 | import ro.sync.exml.workspace.api.editor.WSEditor; 6 | import ro.sync.exml.workspace.api.editor.page.WSEditorPage; 7 | import ro.sync.exml.workspace.api.editor.page.author.WSAuthorEditorPage; 8 | 9 | public class StaticFct { 10 | 11 | 12 | public static String getAuthorName() { 13 | WSEditor editorAccess = PluginWorkspaceProvider.getPluginWorkspace().getCurrentEditorAccess(PluginWorkspace.MAIN_EDITING_AREA); 14 | if (editorAccess != null) { 15 | final WSEditorPage currentPage = editorAccess.getCurrentPage(); 16 | if (currentPage instanceof WSAuthorEditorPage) { 17 | return ((WSAuthorEditorPage)currentPage).getAuthorAccess().getReviewController().getReviewerAuthorName(); 18 | } 19 | } 20 | return null; 21 | } 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /samples/SqfUtil/README.md: -------------------------------------------------------------------------------- 1 | # SQF Utility 2 | 3 | This is a library for some utility to be used by different SQF samples. 4 | The library java/SqfUtil needs to be places in the oXygen/lib folder so Saxon can access it. 5 | After copying the file oXygen needs to be restarted. 6 | -------------------------------------------------------------------------------- /samples/SqfUtil/java/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /samples/SqfUtil/java/.gitignore: -------------------------------------------------------------------------------- 1 | /bin/ 2 | -------------------------------------------------------------------------------- /samples/SqfUtil/java/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | SqfUtil 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | 15 | org.eclipse.jdt.core.javanature 16 | 17 | 18 | -------------------------------------------------------------------------------- /samples/SqfUtil/java/SqfOxyUtil.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schematron-quickfix/sqf/bdbd92956e83ac4576d816ef246bb4cbdfa82886/samples/SqfUtil/java/SqfOxyUtil.jar -------------------------------------------------------------------------------- /samples/SqfUtil/java/build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /samples/SqfUtil/java/src/org/sqf/util/StaticFct.java: -------------------------------------------------------------------------------- 1 | package org.sqf.util; 2 | 3 | import java.net.URI; 4 | 5 | import javax.xml.transform.Source; 6 | import javax.xml.transform.TransformerException; 7 | 8 | import org.apache.log4j.Logger; 9 | 10 | import net.sf.saxon.Configuration; 11 | import net.sf.saxon.expr.XPathContext; 12 | import net.sf.saxon.om.NodeInfo; 13 | //import net.sf.saxon.query.QueryResult; 14 | import net.sf.saxon.s9api.DocumentBuilder; 15 | import net.sf.saxon.s9api.Processor; 16 | import net.sf.saxon.s9api.SaxonApiException; 17 | import net.sf.saxon.s9api.XdmNode; 18 | 19 | public class StaticFct { 20 | 21 | 22 | private static final Logger logger = Logger.getLogger(StaticFct.class.getName()); 23 | 24 | 25 | public static NodeInfo loadDocRaw(XPathContext context, URI uri) { 26 | 27 | // create new, compatible configuration 28 | final Configuration baseConfig = context.getConfiguration(); 29 | final Configuration newConfig = new Configuration(); 30 | newConfig.setNamePool(baseConfig.getNamePool()); 31 | newConfig.setDocumentNumberAllocator(baseConfig.getDocumentNumberAllocator()); 32 | 33 | // don't resolve attribute defaults and XIncludes! 34 | newConfig.setExpandAttributeDefaults(false); 35 | newConfig.setXIncludeAware(false); 36 | 37 | try { 38 | 39 | final Source source = baseConfig.getURIResolver().resolve(uri.getPath(), null); 40 | final Processor processor = new Processor(newConfig); 41 | final DocumentBuilder builder = processor.newDocumentBuilder(); 42 | final XdmNode doc = builder.build(source); 43 | 44 | //logger.info("loadDocRaw: " + QueryResult.serialize(doc.getUnderlyingNode())); 45 | 46 | return doc.getUnderlyingNode(); 47 | 48 | } catch (TransformerException | SaxonApiException e) { 49 | logger.error(e, e); 50 | return null; 51 | } 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /samples/SqfUtil/loadDocRaw-test/loadDocRaw-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /samples/SqfUtil/loadDocRaw-test/loadDocRaw-test.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /samples/SqfUtil/loadDocRaw-test/loadDocRaw-test.xsl: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Resolved: 16 | 17 | 18 | Raw: 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /samples/SqfUtil/sqfu-copy-of-test/sqfu-copy-of-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Element1 4 | Element2 5 | Element3 6 | 7 | -------------------------------------------------------------------------------- /samples/SqfUtil/sqfu-copy-of-test/sqfu-copy-of-test.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /samples/SqfUtil/sqfu-copy-of-test/sqfu-copy-of-test.xsl: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | copy of document node: 18 | 19 | 20 | 21 | 22 | 23 | copy of root element: 24 | 25 | 26 | 27 | 28 | copy of all elements: 29 | 30 | 31 | 32 | 33 | 34 | 35 | copy of all elements with default-value as attribute: 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /samples/SqfUtil/sqfu-copy-of.xsl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | no parent for node '' 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | no match for node 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /samples/add-id/README.md: -------------------------------------------------------------------------------- 1 | # Add ID 2 | 3 | The Schematron file holds a list of DITA classes that should contain an id attribute. The Schematron rul checks for the existence. 4 | 5 | There are two quick fixes: One for the concrete element and one for the complete file. -------------------------------------------------------------------------------- /samples/add-id/add-id.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Add ID 7 | 8 |
9 | A Section 10 |

A paragraph.

11 |

Another paragraph.

12 |
13 |
14 | Another Section 15 |

A paragraph.

16 |

Another paragraph.

17 |
18 | 19 |
20 | -------------------------------------------------------------------------------- /samples/add-id/add-id.sch: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | The element should have an id attribute. 26 | 27 | 28 | 29 | 30 | Add id attribute to this element. 31 | 32 | 33 | 38 | 39 | 40 | 41 | 42 | Add all missing id attributes in this file. 43 | 44 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /samples/correct-spacing/README.md: -------------------------------------------------------------------------------- 1 | # Correct Spacing 2 | 3 | When specific elements are marked with @xml:space="preserve" their whitespaces are not normalized before displayed. 4 | 5 | This sample contains various checks for wrong whitespaces within paragraphs and individual lists of quickfixes. -------------------------------------------------------------------------------- /samples/correct-spacing/correct-spacing.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Correct Spacing in Space Preserved Paragraphs 7 | 8 |
9 | Leading Spaces 10 |

This text starts with a whitespace.

11 |
12 |
13 | Trailing Spaces 14 |

Text with space at the end – often a sign that the next is not completed and the author wanted to

15 |
16 |
17 | Multiple Space 18 |

Text with multiple whitespaces might indicate that the author planned to insert an element there. E.g. an xref in "Click for more details."

19 |
20 |
21 | Line Breaks 22 |

First paragraph. 23 | Second paragraph. 24 | Third paragraph.

25 |
26 |
27 | Mixture 28 |

This text contains leading, trailing and multiple whitespaces as well as a 29 | linebreak.

30 |
31 | 32 |
33 | -------------------------------------------------------------------------------- /samples/correct-spacing/correct-spacing.sch: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 23 | The element should not contain leading whitespaces. 24 | 25 | 26 | 30 | The should not contain trailing whitespaces. 31 | 32 | 33 | 37 | The should not contain linebreaks. 38 | 39 | 40 | 44 | The element should not contain multiple consecutive whitespaces 45 | (marked by '***[]***'): '' 46 | 47 | 48 | 49 | 50 | Remove leading whitespaces. 51 | 52 | 53 | 54 | 55 | 56 | 57 | Remove trailing whitespaces. 58 | 59 | 60 | 61 | 62 | 63 | 64 | Replace linebreaks by spaces. 65 | 66 | 67 | 68 | 69 | 70 | 71 | Split element on linebreaks. 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | Remove multiple whitespaces. 83 | 84 | 85 | 86 | 87 | 88 | 89 | Normalize all whitespaces. 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /samples/correct-spacing/correct-spacing.xsl: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /samples/correct-spacing/topic-with-space-preserve.rng: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/OutputCodedeblock.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Sample 6 | 7 |
8 |

On Linux, the Java command should look like this:

9 | java -Xmx600m -XX:MaxPermSize=256m "-Dcom.oxygenxml.editor.plugins.dir=$OXYGEN_HOME/plugins" 10 | 11 | java -Xmx600m -XX:MaxPermSize=256m\ 12 | "-Dcom.oxygenxml.editor.plugins.dir=$AUTHOR_HOME/plugins" 13 | 14 | java -Xmx600m -XX:MaxPermSize=256m\ 15 | "-Dcom.oxygenxml.editor.plugins.dir=$DEVELOPER_HOME/plugins" 16 |
17 | 18 |
19 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/README.md: -------------------------------------------------------------------------------- 1 | # Editing Rules and Fixes for DITA Documents 2 | 3 | ### Various types of rules for DITA documents: 4 | - Simple editing rules 5 | - Styling is not allowed in titles 6 | - Semicolon is not allowed at the end of a list item 7 | - Text in the link and the value of the @href are the same 8 | - Editing consistency rules 9 | - Topic ID must be equal to file name 10 | - All sections should have an @id 11 | - Consecutive lists are not allowed 12 | - Structure rules 13 | - Missing cells in a table 14 | - Too many nested lists 15 | - List contains only one item 16 | - Output related rules 17 | - Lines in codeblocks should not exceed 80 characters. 18 | 19 | ----- 20 | 21 | See how you can implement this rules and fixes in the following presentations: 22 | - http://www.slideshare.net/nottavy/guided-authoring-enforcing-editing-rules 23 | - http://www.slideshare.net/nottavy/business-rules-fixes-automatic-fixes 24 | 25 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/Schemas/flowersEditingConsistencyRules.sch: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Topic ID must be equal to file name. 12 | 13 | 14 | 15 | Set "" as a topic ID 16 | The topic ID must be equal to the file name. 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | All sections should have an @id attribute 27 | 28 | 29 | 30 | Add @id to the current section 31 | Add an @id attribute to the current section. The ID is generated from the section title. 32 | 33 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | Add @id to all sections 44 | Add an @id attribute to each section from the document. The ID is generated from the section title. 45 | 46 | 47 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | Two 60 | consecutive unordered lists. You can probably merge them into one. 61 | 62 | 63 | 64 | Merge lists into one 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | Image without 88 | a reference. 89 | 90 | 91 | 92 | Add @href attribute 93 | 94 | 95 | 96 | 97 | 98 | 99 | Add @keyref attribute 100 | 101 | 102 | 103 | 104 | 105 | 106 | Add @conref attribute 107 | 108 | 109 | 110 | 111 | 112 | 113 | Add @conkeyref attribute 114 | 115 | 116 | 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/Schemas/flowersOutputRules.sch: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Lines in codeblocks should not exceed 80 characters. 12 | () 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/Schemas/flowersSimpleStylingRules.sch: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | 8 | 9 | Bold element is not allowed in 10 | title. 11 | 12 | 13 | 14 | 15 | Change the bold element into text 16 | Removes the bold (b) markup and keeps the text content. 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | Ordered lists are not 27 | allowed, use unordered lists instead. 28 | 29 | 30 | 31 | 32 | Convert ordered list to unordered list 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | Semicolon is not allowed after list item. 44 | 45 | 46 | 47 | 48 | Remove semicolon 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | Replace semicolon with full stop 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | Link text is same as @href attribute value. Please remove. 68 | 69 | 70 | 71 | Remove redundant link text, text is same as @href value. 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | The text in a section element should be in a paragraph. 83 | 84 | 85 | 86 | 87 | Wrap text in a paragraph 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/Schemas/flowersStructureRules.sch: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | Cells are missing. (The 13 | number of cells for each row must be ) 14 | 15 | 16 | 17 | 18 | Add enough empty cells on each row 19 | Add enough empty cells on each row to match the required number of cells. 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | Ordered lists are not 35 | allowed, use unordered lists instead. 36 | 37 | 38 | 39 | 40 | Convert ordered list to unordered list 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | Semicolon is not allowed after list item. 62 | 63 | 64 | 65 | 66 | Remove semicolon 67 | 68 | 69 | 70 | 71 | 72 | There are too many levels in 73 | this list 74 | 75 | 76 | A list must have more than 77 | one item 78 | 79 | 80 | 81 | 82 | Resolve the list into plain text 83 | The list will be converted into plain text. 84 | The text content of the list will be added as text. 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | Add new list item 95 | Add a new list item as last item in the list 96 | 97 | 98 | 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/flowersEditingConsistencyRules.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Growing Flowers 6 | 7 |
8 | Introduction 9 |

With just a little bit of care and preparation, any flower garden can be a vibrantly 10 | colored environment. Flowers can be selected for specific blooming seasons, colors and 11 | shapes. Both annual and perennial flower gardens can be planted depending on climate and 12 | specific needs.

13 |
14 |
15 | Flowers by Season 16 |

The various climatic changes that occur in cyclic pattern are termed as 'Seasons'. There 17 | are four general seasons occurring on Earth - Spring, Summer, Autumn and Winter.

18 | 24 | 34 |
35 | 36 |
37 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/flowersSimpleStylingRules.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Growing <b>Flowers</b> 6 | 7 |
8 | Introduction 9 |

With just a little bit of care and preparation, any flower garden can be a vibrantly 10 | colored environment. Flowers can be selected for specific blooming seasons, colors and 11 | shapes. Both annual and perennial flower gardens can be planted depending on climate and 12 | specific needs.

13 |

Read more about growing flowers here:

14 | 21 |

Most of the information was taken from http://www.wikipedia.org, the free encyclopedia.

23 |
24 | 25 |
26 | -------------------------------------------------------------------------------- /samples/editingRules-DITA/flowersStructureRules.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Growing <b>Flowers</b> 6 | 7 |
8 | Care and Preparation 9 |

When caring for your flower garden you want to feed your plants properly, control pests and 10 | weeds. Good soil is a must to successful gardening, landscaping, and healthy flowers. You 11 | have to balance the soil structure with nutrients and regulate the pH to cover your plants' 12 | needs. And above all, remember that many flower gardens fail because they just don't get 13 | enough of your attention.

14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Flower 22 | Type 23 | 24 | 25 | 26 | 27 | Chrysanthemum 28 | perennial 29 | well drained 30 | 31 | 32 | Gardenia 33 | perennial 34 | 35 | 36 | Gerbera 37 | annual 38 | sandy, well-drained 39 | 40 | 41 | Iris 42 | 43 | 44 | 45 |
46 |
47 |
48 | Flowers by Season 49 |

The various climatic changes that occur in cyclic pattern are termed as 'Seasons'. There 50 | are four general seasons occurring on Earth - Spring, Summer, Autumn and Winter.

51 | 80 |
81 | 82 |
83 | -------------------------------------------------------------------------------- /samples/handle-dita-attributes/README.md: -------------------------------------------------------------------------------- 1 | # Handle DITA attributes 2 | 3 | DITA makes a lot use of attributes with default values. One use case is to set static properties in the schema (e.g. @class and @domains). Another is to set a real default value that can be changed by the author. 4 | 5 | The difficulty is that on the one hand you might want to use these attribute defaults (especially @class) to identify specific nodes. On the other hand you usually don't want to have such attributes added to the result document when they where not explicitly set in the original document. 6 | 7 | This sample is to demonstrate different ways how to handle such attribute defaults. -------------------------------------------------------------------------------- /samples/handle-dita-attributes/handle-dita-attributes.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Handle DITA Attributes 7 | 8 |
9 | Some Example section 10 |

Some text here...

11 | <Root> 12 | <Element/> 13 | </Root> 14 |

Some more text here...

15 |
16 | 17 |
18 | -------------------------------------------------------------------------------- /samples/handle-dita-attributes/handle-dita-attributes.sch: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | For a section with 'Example' in its title use the specialized example element. 21 | 22 | 23 | 24 | 25 | Convert section to example element. (minimal) 26 | Version with minimal code. It has the drawback that the class attribute of the section will be copied as well overwriting the default for the new example element. 27 | 28 | 29 | 30 | 31 | 32 | 33 | Convert section to example element. (minimal fixed) 34 | Version with minimal but correct code. It does not copy the @class of the section element but still expands all other attribute defaults. 35 | 36 | 37 | 38 | 39 | 40 | 41 | Convert section to example element. (XSLT) 42 | An XSLT solution that recursively processes the content and keeps @class and namespace declarations from being copied. 43 | Since the @type attribute might be set explicitly it can't be hidden completely and, thus, is expanded always. 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | Convert section to example element. (Extension) 53 | An XSLT solution that uses a Saxon extension instruction to use the original file as source without attribute defaults being expanded at all. 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /samples/handle-dita-attributes/handle-dita-attributes.xsl: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /samples/handle-docbook-xincludes/README.md: -------------------------------------------------------------------------------- 1 | # Handle DocBook XIncludes 2 | 3 | DocBook uses XInclude to split a larger document in separate files. 4 | 5 | The difficulty is that on the one hand you might want to apply the Schematron rules and the Quick Fixes to the included content as well. On the other hand you usually don't want to have these xIncludes being resolved after applying a quick fix. 6 | 7 | This sample is to demonstrate different ways how to handle this situation. 8 | 9 | NOTE: With oXygen 17.1 only the first QuickFix is currently working!? 10 | -------------------------------------------------------------------------------- /samples/handle-docbook-xincludes/child.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | An External Child Section 6 | Some text here... 7 | <Root> 8 | <Element/> 9 | </Root> 10 | Some more text here... 11 |
-------------------------------------------------------------------------------- /samples/handle-docbook-xincludes/handle-docbook-xincludes.sch: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | A chapter with 'appendix' in its title us an appendix instead. 24 | 25 | 26 | 27 | 28 | Convert chapter to appendix element. (minimal) 29 | Version with minimal code. It has the drawback that the xincludes are resolved and the spaces within programlisting are not preserved. 30 | 31 | 32 | 33 | 34 | 35 | 36 | Convert chapter to appendix element. (XSLT) 37 | An XSLT solution that recursively processes the content and recreates the xInclude, but without any xi:fallback. 38 | For an unknown reason, when being applied in oXygen an error and several warnings occur. 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | Convert chapter to appendix element. (Extension) 48 | An XSLT solution that uses a Saxon extension instruction to use the original file as source without attribute defaults being expanded at all. 49 | When being applied in oXygen the XIncludes seems to be resolved - so no xi:include element is present there. 50 | Furthermore, the whitespaces in the programlisting element are modified. 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /samples/handle-docbook-xincludes/handle-docbook-xincludes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Handle DocBook XIncludes 7 | 8 | Appendix A: Some Samples 9 |
10 | An Internal Child Section 11 | Some text here... 12 | <Root> 13 | <Element/> 14 | </Root> 15 | Some more text here... 16 |
17 | 18 | ##FALLBACK## 19 | 20 |
21 |
22 | -------------------------------------------------------------------------------- /samples/handle-docbook-xincludes/handle-docbook-xincludes.xsl: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /samples/html-dialog/README.md: -------------------------------------------------------------------------------- 1 | # HTML Dialog 2 | 3 | This sample if just meant as a minimal sample how to use the Saxon extension instruction from within a quick fix. 4 | 5 | ## Special Preconditions 6 | To make this sample work the following preconditions need to be met: 7 | 8 | 1. XSLT Processor 9 | The processing of the XSLT code within the quick fix needs to be processed by Saxon EE 10 | 11 | 2. Saxon Configuration 12 | The extension namespace "http://www.dita-semia.org/xslt-gui" needs to be bound to the java class org.DitaSemia.XsltGui.SaxonFactory. 13 | This can be done using the configuration file saxon-xsltgui-config.xml. 14 | 15 | 3. External Java Library 16 | The java library DitaSemiaXsltGui.jar needs to be within the class path of Saxon. The file can be downloaded from https://github.com/dita-semia/XsltGui. 17 | Of oXygen is used it needs to be restarted after copying the file. 18 | 19 | When using the oXygen project html-dialog-sch.xpr or sqf-samples.xpr the configuration has already been set in the project settings. 20 | Still the jar file needs to be put to the oxygen lib folder. 21 | -------------------------------------------------------------------------------- /samples/html-dialog/html-dialog-sch.xpr: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | key.xslt.saxon8.option.pane 10 | true 11 | 12 | 13 | saxon.latest.config.file 14 | ${pdu}/saxon-xsltgui-config.xml 15 | 16 | 17 | saxon.latest.use.config.file 18 | true 19 | 20 | 21 | saxon8.schema.based.validation 22 | saxon.source.lax.schema.based.validation 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /samples/html-dialog/html-dialog-sch.xsl: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

Edit the text:

18 | 19 |
20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
32 | 33 | 37 | 38 | 39 | 40 |

Edit the text:

41 | 42 |
43 |
44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
53 | 54 |
-------------------------------------------------------------------------------- /samples/html-dialog/html-dialog.sch: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | The element should not contain more than characters. 18 | 19 | 20 | 21 | 22 | Edit the text content. 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /samples/html-dialog/html-dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tooooo looooooooooong Teeeeeext 5 | -------------------------------------------------------------------------------- /samples/html-dialog/saxon-xsltgui-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 16 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /samples/ignore-warning/README.md: -------------------------------------------------------------------------------- 1 | # Ignore Warning 2 | 3 | This sample is to demonstrate how you can use quick fix to let the user mark some sections to ignore a specific warnings 4 | (just like Eclipse can do with Java warnings like 'unused local variable'). 5 | 6 | The idea is to use a special processing instruction which can be inserted anywhere within your document without limitations by the schema. 7 | The schematron rule just has to ignore all content within an element that contains this specific processing instruction. 8 | And the quick fix can add the processing instruction either within the current element, within the current topic or within the root document. -------------------------------------------------------------------------------- /samples/ignore-warning/ignore-warning.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | One Reference Topic 7 | This short description is far too long (and repetitive). 8 | This short description is far too long (and repetitive). This short description is far too 9 | long (and repetitive). This short description is far too long (and repetitive). This short 10 | description is far too long (and repetitive). This short description is far too long (and 11 | repetitive). This short description is far too long (and repetitive). This short description 12 | is far too long (and repetitive). 13 | 14 |
15 |

Some body text...

16 |
17 |
18 | 19 | Another Reference Topic 20 | This short description is far too long (and repetitive). This short description is far 21 | too long (and repetitive). This short description is far too long (and repetitive). This 22 | short description is far too long (and repetitive). This short description is far too 23 | long (and repetitive). This short description is far too long (and repetitive). This 24 | short description is far too long (and repetitive). This short description is far too 25 | long (and repetitive). 26 | 27 |
28 |

Some body text...

29 |
30 |
31 |
32 | 33 | Another Reference Topic 34 | This short description is far too long (and 35 | repetitive). This short description is far too long (and repetitive). This short 36 | description is far too long (and repetitive). This short description is far too long 37 | (and repetitive). This short description is far too long (and repetitive). This short 38 | description is far too long (and repetitive). This short description is far too long 39 | (and repetitive). This short description is far too long (and repetitive). 40 | 41 |
42 | The shortdesc element of this reference is explicitly marked 43 | to ignore the too long content. 44 |
45 |
46 |
47 | 48 | Another Reference Topic 49 | This short description is far too long (and repetitive). This short description 50 | is far too long (and repetitive). This short description is far too long (and 51 | repetitive). This short description is far too long (and repetitive). This short 52 | description is far too long (and repetitive). This short description is far too long 53 | (and repetitive). This short description is far too long (and repetitive). This short 54 | description is far too long (and repetitive). 55 | 56 |
57 | This topic is explicitly marked to ignore too long content in all 58 | shortdesc elements below. 59 |
60 |
61 | 62 | Another Reference Topic 63 | This short description is far too long (and repetitive). This short 64 | description is far too long (and repetitive). This short description is far too long 65 | (and repetitive). This short description is far too long (and repetitive). This 66 | short description is far too long (and repetitive). This short description is far 67 | too long (and repetitive). This short description is far too long (and repetitive). 68 | This short description is far too long (and repetitive). 69 | 70 |
71 |

Some body text...

72 |
73 |
74 |
75 |
76 |
77 | -------------------------------------------------------------------------------- /samples/ignore-warning/ignore-warning.sch: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | The short description should not contain more than characters. Current length: . 24 | 25 | 26 | 27 | 28 | Ignore this warning only for this shortdesc element. 29 | 30 | 31 | 32 | 33 | 34 | 35 | Ignore this warning for the current topic. 36 | 37 | 38 | 39 | 40 | 41 | 42 | Ignore this warning for the whole file. 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /samples/localization/java-properties-dynamic/dog.sch: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | You should not have two dogs with the same name! 12 | 13 | 14 | 15 | 16 | Call the dog 17 | The dog will still have the name but now with the suffix " ". 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /samples/localization/java-properties-dynamic/dog_de.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Nenne den Hund {0} 5 | Der Hund wird weiterhin {0} heißen, nun aber mit dem Zusatz " {1}". 6 | -------------------------------------------------------------------------------- /samples/localization/java-properties-dynamic/dog_fr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Appelle le chien {0} 5 | Le chien portera toujours le nom de {0} mais maintenant avec le suffixe " {1}". 6 | -------------------------------------------------------------------------------- /samples/localization/java-properties/dog.sch: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | A dog should have a bone 8 | 9 | 10 | 11 | 12 | Add a bone 13 | The dog will get a bone. 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /samples/localization/java-properties/dog_de.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Füge einen Knochen hinzu 5 | Der Hund wird einen Knochen erhalten. 6 | -------------------------------------------------------------------------------- /samples/localization/java-properties/dog_fr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Ajouter un os 5 | Le chien aura un os. 6 | -------------------------------------------------------------------------------- /samples/localization/sch-diagnostic-dynamic/dog.sch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | You should not have two dogs with the same name! 10 | 11 | 12 | 13 | Call the dog 14 | The dog will still have the name but now with the suffix " ". 15 | 16 | 17 | 18 | 19 | 20 | 21 | Nenne den Hund 22 | Der Hund wird weiterhin heißen, nun aber mit dem Zusatz " ". 23 | 24 | Appelle le chien 25 | Le chien portera toujours le nom de mais maintenant avec le suffixe " ". 26 | 27 | 28 | -------------------------------------------------------------------------------- /samples/localization/sch-diagnostic/dog.sch: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | A dog should have a bone 6 | 7 | 8 | 9 | Add a bone 10 | The dog will get a bone. 11 | 12 | 13 | 14 | 15 | 16 | 17 | Füge einen Knochen hinzu 18 | Der Hund wird einen Knochen erhalten. 19 | 20 | Ajouter un os 21 | Le chien aura un os. 22 | 23 | 24 | -------------------------------------------------------------------------------- /samples/merge-dita-sl/README.md: -------------------------------------------------------------------------------- 1 | # Merge sl 2 | 3 | The use case is that in DITA it can easily happen to have two consecutive sl elements which might look identical in the author mode of oXygen XML editor. But in publication the spacing might be differently. 4 | 5 | The quick fix will merge all the content of the second sl element into the previous one. 6 | 7 | ## Issue 8 | Currently there is one issue: The attribute defaults will be resolved within the merged content. This is usually not desired. -------------------------------------------------------------------------------- /samples/merge-dita-sl/merge-dita-sl.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Merge DITA <codeph>sl</codeph> 7 | 8 |

Two consecutive sl elements:

9 | 10 | 1st Entry 11 | 2nd Entry 12 | 13 | 14 | 3rd Entry 15 | 4th Entry 16 | 17 | 18 |
19 | -------------------------------------------------------------------------------- /samples/merge-dita-sl/merge-dita-sl.sch: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The sl element directly follows another sl element. 16 | 17 | 18 | 19 | 20 | integrate the sl element into the previous one. 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /samples/outsource-dita-topics/README.md: -------------------------------------------------------------------------------- 1 | # Outsource DITA Topic 2 | 3 | The idea is that schematron checks if there is any child topic within the same file. A quick fix can outsource all child topics and modify the DITA map as well. 4 | 5 | Identifying the DITA map that needs to be modified, works by searching for any *.ditamap file within the same folder that references the topic. 6 | 7 | The file oursource-dita-topics-dita-semia.dita required the dita-semia plugin (https://github.com/dita-semia/dita-semia-resolver) to be installed for proper rendering in oXygen. The file has been created to demonstrate a more complicated use-case for handling attribute defaults. -------------------------------------------------------------------------------- /samples/outsource-dita-topics/oursource-dita-topics-dita-semia.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | Outsource DITA Topics (DITA-SEMIA) 6 | 7 | DoSomething 8 | This software component does something... 9 | 10 |
11 | SC0357 12 | 13 | LOGGING
14 | DATA
15 |
16 |
17 |
18 |

Text...

19 | Some internal text... 20 |
21 | 22 | 23 | <desc>Graphic...</desc> 24 | </flowchart> 25 | </body> 26 | </software-component> 27 | <topic id="wpl_vtw_25"> 28 | <title>Description 29 | 30 |

Specialized software-component 31 | element with a specialized content:

32 |
    33 |
  • 34 |

    A title with the prefix "Software Component".

    35 |
  • 36 |
  • 37 |

    A header with some internal information about the software component.

    38 |
  • 39 |
  • 40 |

    A flowchart element (derived from fig) with a fixed title 41 | using the title of the software component.

    42 |
  • 43 |
44 |

A special CSS has been added to highlight content marked as 45 | @audience = "internal".

46 | 47 |
48 | 49 | -------------------------------------------------------------------------------- /samples/outsource-dita-topics/oursource-dita-topics-dita-semia.xsd: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | This group is referenced in all topic modules but not defined there. 109 | It must be declared in topic-type shells. 110 | 111 | 112 | 113 | 114 | 115 | 117 | 118 | 119 | 120 | 121 | 122 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | -------------------------------------------------------------------------------- /samples/outsource-dita-topics/outsource-dita-topics.dita: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Outsource DITA Topics 7 | 8 |

Some text here...

9 | <Root> 10 | <Element/> 11 | </Root> 12 |

Some more text here...

13 | 14 | 15 | Child Topic 16 | 17 |

Some text here...

18 | <Root> 19 | <Element/> 20 | </Root> 21 |

Some more text here...

22 | 23 |
24 |
25 | -------------------------------------------------------------------------------- /samples/outsource-dita-topics/outsource-dita-topics.ditamap: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | DITA Map 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /samples/outsource-dita-topics/outsource-dita-topics.sch: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Topic '' should be placed in its own file and referenced within the DITA map. 24 | 25 | 26 | 27 | 28 | 29 | Outsource all topics in individual files. 30 | Generates a new file for each child topic. 31 | This version is not working in oXygen, since it currently can't handle XIncludes within SQF correctly. 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /samples/outsource-dita-topics/outsource-dita-topics.xsl: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | XXXXXXXXXXXXXXXXX 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters-gui/README.md: -------------------------------------------------------------------------------- 1 | # Outsource DocBook Chapters with GUI 2 | 3 | A combination of two smaples: 4 | 1. oursource-docbook-chapters 5 | 2. html-dialog 6 | 7 | It allows the user to modify the individual filenames before outsourcing the chapters. 8 | 9 | To make the sampel work check the readme file in the html-dialog sample. -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters-gui/oursourced-chapter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Oursourced Chapter 6 | Some text here... 7 | <Root> 8 | <Element/> 9 | </Root> 10 | Some more text here... 11 | 12 | 13 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters-gui/outsource-docbook-chapters-gui.sch: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Chapter '' should be placed in its own file and referenced with XInclude. 25 | 26 | 27 | 28 | 29 | 30 | 31 | Outsource all remaining chapters in individual files. (real) 32 | Generates a new file for each chapter and repaces the content by an XInclude element. 33 | This version is not working in oXygen, since it currently can't handle XIncludes within SQF correctly. 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Outsource all remaining chapters in individual files. (fake) 51 | Generates a new file for each chapter and repaces the content by an XInclude element. 52 | This version does not generate xi:include elements but xi:Include instead to demonstrate it in oXygen as well. 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters-gui/outsource-docbook-chapters-gui.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Outsource DocBook Chapters with GUI 7 | 8 | One chapter 9 | Some text here... 10 | <Root> 11 | <Element/> 12 | </Root> 13 | Some more text here... 14 | 15 | 16 | 17 | Another Chapter 18 | Some text here... 19 | <Root> 20 | <Element/> 21 | </Root> 22 | Some more text here... 23 | 24 | 25 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters-gui/outsource-docbook-chapters-gui.xsl: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 46 | 49 | 65 | 66 | 67 | 68 |
#TitleFilename
44 | 45 | 47 | 48 | 50 | 51 | 52 | 55 | 56 | 57 | 62 | 63 | 64 |
69 |
70 |
71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | Abort by user. 82 | 83 | 84 | 85 |
86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 |
-------------------------------------------------------------------------------- /samples/outsource-docbook-chapters/README.md: -------------------------------------------------------------------------------- 1 | # Outsource DocBook Chapters 2 | 3 | The idea is that schematron checks if all chapter elements within the book should have their own file and be referenced with xinclude. A quick fix can outsource the chapters. 4 | 5 | Since in oXygen it is currently not possible to generate xinclude elements there are two quick fixes offered: One that tries to generate real xincludes and another one that generates faked xincludes to see the result in oXygen as well. -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters/oursourced-chapter.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Oursourced Chapter 6 | Some text here... 7 | <Root> 8 | <Element/> 9 | </Root> 10 | Some more text here... 11 | 12 | 13 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters/outsource-docbook-chapters.sch: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | Chapter '' should be placed in its own file and referenced with XInclude. 25 | 26 | 27 | 28 | 29 | 30 | 31 | Outsource all remaining chapters in individual files. (real) 32 | Generates a new file for each chapter and repaces the content by an XInclude element. 33 | This version is not working in oXygen, since it currently can't handle XIncludes within SQF correctly. 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | Outsource all remaining chapters in individual files. (fake) 47 | Generates a new file for each chapter and repaces the content by an XInclude element. 48 | This version does not generate xi:include elements but xi:Include instead to demonstrate it in oXygen as well. 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters/outsource-docbook-chapters.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Outsource DocBook Chapters 7 | 8 | One chapter 9 | Some text here... 10 | <Root> 11 | <Element/> 12 | </Root> 13 | Some more text here... 14 | 15 | 16 | 17 | Another Chapter 18 | Some text here... 19 | <Root> 20 | <Element/> 21 | </Root> 22 | Some more text here... 23 | 24 | 25 | -------------------------------------------------------------------------------- /samples/outsource-docbook-chapters/outsource-docbook-chapters.xsl: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /samples/register-key-oxy/README.md: -------------------------------------------------------------------------------- 1 | # Register Key (Oxygen version) 2 | 3 | The use case is that a specific key element is only allowed to contain values defined in a global key file. 4 | 5 | The quick fix adds an unknown key to the global file. 6 | 7 | This is an extension of the register-key sample with the addition that the global file also contains the author who registered the key. 8 | The quick fix will add this from the configuration of the oXygen XML editor when being used in author mode. 9 | 10 | 11 | ## Special Preconditions 12 | To make this sample work the following preconditions need to be met: 13 | 14 | 1. XSLT Processor 15 | The processing of the XSLT code within the quick fix needs to be processed by Saxon EE 16 | 17 | 2. oXygen environment 18 | The Schematorn check needs to be performed from oXygen. 19 | 20 | 3. External Java Library 21 | The java library SqfOxyUtil.jar needs to be within the class path of Saxon. The file is placed in the folder samples/SqfOxyUtil/java. 22 | 23 | 4. Configure Author 24 | In the oXygen Options -> Editor -> Edit modes -> Author -> Review you need to enter your name (if not already done). -------------------------------------------------------------------------------- /samples/register-key-oxy/key-list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Condition.001 4 | Condition.003 5 | -------------------------------------------------------------------------------- /samples/register-key-oxy/register-key.css: -------------------------------------------------------------------------------- 1 | ConditionList { 2 | display: block; 3 | } 4 | 5 | Condition { 6 | display: list-item; 7 | list-style: disc; 8 | margin-left: 1em; 9 | } 10 | 11 | Condition > *{ 12 | display: block; 13 | } 14 | 15 | Key { 16 | font-weight: bold; 17 | } -------------------------------------------------------------------------------- /samples/register-key-oxy/register-key.sch: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | The key '' is not registered yet. 22 | 23 | 24 | 25 | 26 | Add key '' to list. 27 | 28 | 29 | 30 | 31 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /samples/register-key-oxy/register-key.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Condition.001 7 | Some text... 8 | 9 | 10 | Condition.002 11 | Some text... 12 | 13 | 14 | Condition.003 15 | Some text... 16 | 17 | 18 | Condition.004 19 | Some text... 20 | 21 | -------------------------------------------------------------------------------- /samples/register-key/README.md: -------------------------------------------------------------------------------- 1 | # Register Key 2 | 3 | The use case is that a specific key element is only allowed to contain values defined in a global key file. 4 | 5 | The quick fix adds the unknown key to the global file. -------------------------------------------------------------------------------- /samples/register-key/key-list.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Condition.001 4 | Condition.003 5 | -------------------------------------------------------------------------------- /samples/register-key/register-key.sch: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | The key '' is not registered yet. 21 | 22 | 23 | 24 | 25 | Add key '' to list. 26 | 27 | 28 | 29 | 30 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /samples/register-key/register-key.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Condition.001 6 | Some text... 7 | 8 | 9 | Condition.002 10 | Some text... 11 | 12 | 13 | Condition.003 14 | Some text... 15 | 16 | 17 | Condition.004 18 | Some text... 19 | 20 | -------------------------------------------------------------------------------- /samples/user-entry/README.md: -------------------------------------------------------------------------------- 1 | # User Entry 2 | 3 | This sample if just meant as a minimal sample how to use sqf:user-entry. It has pretty much the same behavior as the html-dialog sample. 4 | -------------------------------------------------------------------------------- /samples/user-entry/user-entry.sch: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | The element should not contain more than characters. 16 | 17 | 18 | 19 | 20 | Edit the text content. 21 | 22 | 23 | 24 | Edit the text: 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /samples/user-entry/user-entry.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Tooooo looooooooooong Teeeeeext 5 | -------------------------------------------------------------------------------- /schemas/xml.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | See http://www.w3.org/XML/1998/namespace.html and 7 | http://www.w3.org/TR/REC-xml for information about this namespace. 8 | 9 | This schema document describes the XML namespace, in a form 10 | suitable for import by other schema documents. 11 | 12 | Note that local names in this namespace are intended to be defined 13 | only by the World Wide Web Consortium or its subgroups. The 14 | following names are currently defined in this namespace and should 15 | not be used with conflicting semantics by any Working Group, 16 | specification, or document instance: 17 | 18 | base (as an attribute name): denotes an attribute whose value 19 | provides a URI to be used as the base for interpreting any 20 | relative URIs in the scope of the element on which it 21 | appears; its value is inherited. This name is reserved 22 | by virtue of its definition in the XML Base specification. 23 | 24 | id (as an attribute name): denotes an attribute whose value 25 | should be interpreted as if declared to be of type ID. 26 | This name is reserved by virtue of its definition in the 27 | xml:id specification. 28 | 29 | lang (as an attribute name): denotes an attribute whose value 30 | is a language code for the natural language of the content of 31 | any element; its value is inherited. This name is reserved 32 | by virtue of its definition in the XML specification. 33 | 34 | space (as an attribute name): denotes an attribute whose 35 | value is a keyword indicating what whitespace processing 36 | discipline is intended for the content of the element; its 37 | value is inherited. This name is reserved by virtue of its 38 | definition in the XML specification. 39 | 40 | Father (in any context at all): denotes Jon Bosak, the chair of 41 | the original XML Working Group. This name is reserved by 42 | the following decision of the W3C XML Plenary and 43 | XML Coordination groups: 44 | 45 | In appreciation for his vision, leadership and dedication 46 | the W3C XML Plenary on this 10th day of February, 2000 47 | reserves for Jon Bosak in perpetuity the XML name 48 | xml:Father 49 | 50 | 51 | 52 | 53 | This schema defines attributes and an attribute group 54 | suitable for use by 55 | schemas wishing to allow xml:base, xml:lang, xml:space or xml:id 56 | attributes on elements they define. 57 | 58 | To enable this, such a schema must import this schema 59 | for the XML namespace, e.g. as follows: 60 | <schema . . .> 61 | . . . 62 | <import namespace="http://www.w3.org/XML/1998/namespace" 63 | schemaLocation="http://www.w3.org/2001/xml.xsd"/> 64 | 65 | Subsequently, qualified reference to any of the attributes 66 | or the group defined below will have the desired effect, e.g. 67 | 68 | <type . . .> 69 | . . . 70 | <attributeGroup ref="xml:specialAttrs"/> 71 | 72 | will define a type which will schema-validate an instance 73 | element with any of those attributes 74 | 75 | 76 | 77 | In keeping with the XML Schema WG's standard versioning 78 | policy, this schema document will persist at 79 | http://www.w3.org/2007/08/xml.xsd. 80 | At the date of issue it can also be found at 81 | http://www.w3.org/2001/xml.xsd. 82 | The schema document at that URI may however change in the future, 83 | in order to remain compatible with the latest version of XML Schema 84 | itself, or with the XML namespace itself. In other words, if the XML 85 | Schema or XML namespaces change, the version of this document at 86 | http://www.w3.org/2001/xml.xsd will change 87 | accordingly; the version at 88 | http://www.w3.org/2007/08/xml.xsd will not change. 89 | 90 | 91 | 92 | 93 | 94 | Attempting to install the relevant ISO 2- and 3-letter 95 | codes as the enumerated possible values is probably never 96 | going to be a realistic possibility. See 97 | RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry 98 | at http://www.iana.org/assignments/lang-tag-apps.htm for 99 | further information. 100 | 101 | The union allows for the 'un-declaration' of xml:lang with 102 | the empty string. 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | See http://www.w3.org/TR/xmlbase/ for 127 | information about this attribute. 128 | 129 | 130 | 131 | 132 | 133 | See http://www.w3.org/TR/xml-id/ for 134 | information about this attribute. 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /spec/img/svg/sqf_copy-of.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | sqf:copy-of 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | sqf:select 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Documentation 41 | 42 | 43 | 44 | 45 | 46 | 47 | The 48 | attribute 49 | selects 50 | nodes 51 | to 52 | be 53 | copied. 54 | 55 | 56 | 57 | 58 | 59 | 60 | Value 61 | 62 | 63 | 64 | 65 | 66 | 67 | XPath 68 | expression. 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | Documentation 97 | 98 | 99 | 100 | 101 | 102 | 103 | This 104 | element 105 | is 106 | available 107 | within 108 | activity 109 | elements. 110 | The 111 | function 112 | is 113 | to 114 | copy 115 | nodes 116 | selected 117 | by 118 | the 119 | select 120 | attribute. 121 | The 122 | element 123 | with 124 | its 125 | attribute 126 | is 127 | treated 128 | as 129 | xsl:copy- 130 | of 131 | with 132 | select 133 | attribute 134 | as 135 | it 136 | is 137 | defined 138 | in 139 | the 140 | XSLT 141 | requirement. 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /spec/img/svg/sqf_foreign-element.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | sqf:foreign-element 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | ##local 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | http://www.w3.org/1999/XSL/Transform 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | sqf:foreign 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | -------------------------------------------------------------------------------- /spec/img/svg/sqf_keep.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | sqf:keep 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | sqf:select 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | Documentation 41 | 42 | 43 | 44 | 45 | 46 | 47 | The 48 | attribute 49 | selects 50 | nodes 51 | to 52 | be 53 | copied. 54 | 55 | 56 | 57 | 58 | 59 | 60 | Value 61 | 62 | 63 | 64 | 65 | 66 | 67 | XPath 68 | expression. 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | Documentation 97 | 98 | 99 | 100 | 101 | 102 | 103 | This 104 | element 105 | is 106 | available 107 | within 108 | activity 109 | elements. 110 | The 111 | function 112 | is 113 | to 114 | copy 115 | nodes 116 | selected 117 | by 118 | the 119 | select 120 | attribute. 121 | Unlike 122 | a 123 | deep 124 | copy 125 | function, 126 | with 127 | this 128 | function 129 | the 130 | copied 131 | nodes 132 | can 133 | be 134 | manipulated 135 | by 136 | the 137 | current 138 | or 139 | other 140 | activity 141 | elements. 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | -------------------------------------------------------------------------------- /spec/img/svg/sqf_rootAttributes.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | sqf:rootAttributes 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | sqf:version 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | Documentation 44 | 45 | 46 | 47 | 48 | 49 | 50 | The 51 | attribute 52 | defines 53 | the 54 | used 55 | Schematron 56 | QuickFix 57 | version. 58 | The 59 | attribute 60 | should 61 | be 62 | set, 63 | if 64 | the 65 | Schematron 66 | schema 67 | uses 68 | the 69 | Schematron 70 | QuickFix 71 | extensions. 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /spec/img/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/schematron-quickfix/sqf/bdbd92956e83ac4576d816ef246bb4cbdfa82886/spec/img/workflow.png --------------------------------------------------------------------------------