SlideShare a Scribd company logo
1 of 40
Download to read offline
XML Quick Fixes
Octavian Nadolu
octavian_nadolu@oxygenxml.com
@OctavianNadolu
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Overview
● Generic Quick Fix support in oXygen
● Quick fix support for XML validated against XSD
● Quick fix support for XML validated against
Relax NG
● Schematron Quick Fix language
● Developing custom quick fixes in Schematron
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Quick Fixes
● It is important to have documents without errors
● Not all users know how to fix the errors
● Suggestions to fix errors
● Similar to spell check proposals
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Proposals to Solve Errors
● Analyze the errors and propose valid fixes
● Some errors can be fixed automatically
● Required element missing
● Attribute not allowed
● Write your own quick fixes
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
<oXygen/> Quick Fixes Support
● For XSLT documents
● For Ant Build documents
http://www.oxygenxml.com/events/2014/webinar_xslt_quick_fixes.html
● For XML documents
– validation against XML Schema
– validation against Relax NG
– validation against Schematron
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Using Quick Fixes
● Placing the caret on error highlight will display a
red bulb button
● Show fix proposals:
● Click the red bulb
● Invoke the quick fix menu with Alt + 1
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Apply Quick Fix
● Just select the proposal
● Available in both Text and Author page
● Reconfigure on document modification
● Undo modification
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
XML Quick Fixes
Solve errors that appear in an XML document
● Fixes generated automatically
– validation against XML Schema
– validation against Relax NG
● Fixes provided by the developer
– validation against Schematron
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
XML Validated with XSD
● Quick fixes for common errors
– A required attribute is missing
– An element is invalid in the current context
– References to an invalid ID
...
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
XML Validated with Relax NG
● Quick fixes for common validation errors
– A required attribute is missing
– An element is invalid in the current context
– References to an invalid ID
● Both RNG and RNC schemas are supported
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Benefits
● Fixes generated automatically for common
errors
● A better understanding of the problem
● Solve errors with just one click
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
XML Validated with Schematron
● Define custom errors in Schematron
● Create custom fixes with SQF
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Example
A group of technical writers
works on a documentation
project
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Rules
Rules to maintain a
common language
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Business Rules Examples
● Bold element is not allowed in title
● An external link requires the @format attribute
● Semicolon is not allowed after list item
● Each row must have the same number of cells
● Ordered lists are not allowed
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Schematron Rules
Custom rules imposed with
Schematron
Custom fixes offered by SQF
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Custom Fixes Examples
Bold element is not allowed in title
Remove bold styling
An external link requires the @format attribute
Add @format attribute
Semicolon is not allowed after list item
Remove semicolon
Replace semicolon with full stop
Each row must have the same number of cells
Add missing cells
Ordered lists are not allowed
Convert ordered list to unordered one
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Schematron Quick Fixes (SQF)
● Extends the Schematron language
● SQF initiated by Nico Kutscherauer/data2type
● Open source project
www.schematron-quickfix.com
github.com/schematron-quickfix/sqf
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Schematron Quick Fixes Spec
www.w3.org/community/quickfix
schematron-quickfix.github.io/sqf
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF in Schematron
● Associated with assert and report elements
<sch:rule context="title">
<sch:report test="exists(b)" sqf:fix="resolveBold">
Bold element is not allowed in title.</sch:report>
…...........
</rule>
<sch:rule context="xref">
<sch:assert test="matches(@href, '^http(s?)://')" sqf:fix="addHttp addHttps">
An external link should start with http(s).</sch:assert>
…...........
</sch:rule>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Schematron Quick Fix
<sqf:fix id="resolveBold">
<sqf:description>
<sqf:title>Change the bold element into text</sqf:title>
<sqf:p>Removes the bold (b) markup and keeps the text content.</sqf:p>
</sqf:description>
<sqf:replace match="b" select="text()"/>
</sqf:fix>
Operation
ID
Description
Title
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Schematron Quick Fix
●
IDID - an unique ID, used to refer the fix
● Title - represents the name of the quick fix
● Description - details about the fix
● Operations - 4 basic operations
● Add – adds one or more nodes
● Delete – deletes the matched nodes
● Replace – replace a node by another one
● StringReplace – replace sub-strings of text nodes
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “add” operation
● <sqf:add> element allows you to add one or
more nodes to the XML instance
<sch:rule context="xref">
<sch:assert test="@format" sqf:fix="addFormat">
An external link requires the @format attribute.</sch:assert>
<sqf:fix id="addFormat">
<sqf:description>
<sqf:title>Add @format attribute</sqf:title>
</sqf:description>
<sqf:add node-type="attribute" target="format"/>
</sqf:fix>
</sch:rule>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “add” operation
Defines the node type of the node to be added: element, attribute,
pi, comment, keep
Defines nodes or an atomic value as the content of the node to be
added
Defines the qualified name of the node to be added
The position of the nodes to be added relative to the anchor node:
alter, before, first-child, last-child
Describes the content of the node to be added. The behavior
is similar to the content of the <xsl:template> element.
Additionally, the elements <sch:value-of> and <sch:let> are
available.
The match attribute defines the context for the add operation. If it is missing,
then the rule context is used.
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “replace” operation
● <sqf:replace> element specify the nodes to be
replaced and the replacing content
<sch:rule context="ol">
<sch:assert test="false()" sqf:fix="convertOLinUL"> Ordered lists are not
allowed, use unordered lists instead.</sch:assert>
<sqf:fix id="convertOLinUL">
<sqf:description>
<sqf:title>Convert ordered list to unordered list</sqf:title>
</sqf:description>
<sqf:replace target="ul" node-type="element" select="child::node()"/>
</sqf:fix>
</sch:rule>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “replace” operation
Defines the node type of the node to be added: element, attribute,
pi, comment, keep. If is missing a fragment will be inserted.
Defines the qualified name of the node to be added
Defines nodes or values as the content of the node to be added
Describes the content of the node to be added. The behavior
is similar to the content of the <xsl:template> element.
Additionally, the elements <sch:value-of> and <sch:let> are
available.
The match attribute defines nodes to be replaced and the context for the
operation. If it is missing, then the rule context is used.
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “delete” operation
● <sqf:delete> element specify the nodes for the
deletion
<sch:rule context="title">
<sch:report test="comment()" sqf:fix="removeComment">
Comments are not allowed in the title</sch:report>
<sqf:fix id="removeComment">
<sqf:description>
<sqf:title>Delete comments</sqf:title>
</sqf:description>
<sqf:delete match="comment()"/>
</sqf:fix>
</sch:rule>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “delete” operation
The match attribute defines nodes to be deleted.
The default value is “.”. If the match attribute is not
specified the context node will be deleted.
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “stringReplace” operation
● <sqf:stringReplace> element defines the text or
nodes which will replace the matched substrings
<sch:rule context="li">
<sch:report test="matches(text()[last()], ';$')" sqf:fix="replaceSemicolon"
role="warn"> Semicolon is not allowed after list item.</sch:report>
<sqf:fix id="replaceSemicolon">
<sqf:description>
<sqf:title>Replace semicolon with full stop</sqf:title>
</sqf:description>
<sqf:stringReplace match="text()" regex=";$">.</sqf:stringReplace>
</sqf:fix>
</sch:rule>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF “stringReplace” operation
The regex attribute specifies a regular expression that defines the
substrings of the text nodes to be replaced.
Describes the content to be inserted.
The behavior is similar to the content of the <xsl:template>
element. Additionally, the elements <sch:value-of> and
<sch:let> are available.
Defines the nodes or values as the content of the node to be inserted
The match attribute defines text nodes to be processed
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Formatting Inserted Content
● By default, oXygen performs line indenting
● Use the @xml:space attribute and set its value
to preserve for full control of the generated
fragment
● Whitespace is generated similar to XSLT
processing:
– No whitespace for element only content
– Whitespace is significant in mixed content
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Formatting Inserted Content
● <xsl:text> - format content and keep automatic indentation
● @xml:space – preserve space
<sqf:add position="last-child">
<row>
<entry>First column</entry>
<entry>Second column</entry>
</row>
</sqf:add>
<sqf:add node-type="element" target="codeblock" xml:space="preserve">
/* a long sample program */
Do forever
Say "Hello, World"
End</sqf:add>
<sqf:add position="last-child">
<row><xsl:text>
</xsl:text>
<entry>First column</entry><xsl:text>
</xsl:text>
<entry>Second column</entry><xsl:text>
</xsl:text>
</row><xsl:text>
</xsl:text>
</sqf:add>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
The Use-When Condition
● Used to make available a quick fix or a specific
operation only if certain conditions are met
● The condition of the use-when attribute is an
XPath expression
<sch:rule context="li">
<sch:report test="matches(text()[last()], ';$')" sqf:fix="replaceSemicolon">
Semicolon is not allowed after list item.</sch:report>
<sqf:fix id="replaceSemicolon" use-when="position() = last()">
<sqf:description>
<sqf:title>Replace semicolon with full stop</sqf:title>
</sqf:description>
<sqf:stringReplace regex=";$" match="text()">.</sqf:stringReplace>
</sqf:fix>
</sch:rule>
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Additional SQF Elements
<sqf:call-fix> – calls another fix within a fix
<sqf:fixes> – global element that contains fixes
<sqf:group> – defines a group of fixes that can be referred
<sqf:keep> – used to copy the selected nodes
<sqf:user-entry>* – defines a value that must be set manually by
the user
*not supported in <oXygen/> 17
schematron-quickfix.github.io/sqf
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF Framework
● Support to edit SQF files
● Support to edit SQF embedded in Schematron
● Validation as you type
● Content completion
– SQF elements and attributes
– XPath functions
– XSLT functions and variables
– Quick Fix ids
● Search and Refactoring
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF Quick Fixes benefits
● Create custom quick fixes for errors
● Use the power of Schematron and XSLT
● Custom solution for different type of documents
● Create refactoring actions using SQF
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
SQF for any XML
● Schematron can be applied on any XML
● Fixes can be provided for any XML
● SQF used in development
– XSLT
– XML Schema
– Relax NG
...
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Projects using SQF
● <oXygen/> DITA framework
● <oXygen/> User Manual
https://github.com/oxygenxml/userguide
● DIM project
https://github.com/oxygenxml/dim
● TEI
http://wiki.tei-c.org/index.php/Category:Schematron
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Related SQF Projects
● Escali Schematron engine
http://schematron-quickfix.com/escali_xsm.html
● Escali Schematron command line tool
● Oxygen plugin for invoking Escali Schematron
XML Quick FixesXML Quick Fixes
Copyright @ Syncro Soft, 2015. All rights reserved.
Thank you!
Questions?
<oXygen/> XML Editor
http://www.oxygenxml.com
octavian_nadolu@oxygenxml.com
@OctavianNadolu

More Related Content

What's hot

Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQLBrainhub
 
Build Great Triggers Quickly with STP (the Simple Trigger Pattern)
Build Great Triggers Quickly with STP (the Simple Trigger Pattern)Build Great Triggers Quickly with STP (the Simple Trigger Pattern)
Build Great Triggers Quickly with STP (the Simple Trigger Pattern)Vivek Chawla
 
GraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At CommercetoolsGraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At CommercetoolsNicola Molinari
 
Weaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP libraryWeaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP libraryAlexander Lisachenko
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsDaniel Stange
 
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)Pavel Chertorogov
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL StackSashko Stubailo
 
Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)Kfir Bloch
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Jeff Smith
 
ECMAScript 6 Overview & Comparision
ECMAScript 6 Overview & ComparisionECMAScript 6 Overview & Comparision
ECMAScript 6 Overview & ComparisionTalal Suhail
 
Refactoring to Java 8 (Devoxx UK)
Refactoring to Java 8 (Devoxx UK)Refactoring to Java 8 (Devoxx UK)
Refactoring to Java 8 (Devoxx UK)Trisha Gee
 
ScalaClean at ScalaSphere 2019
ScalaClean at ScalaSphere 2019ScalaClean at ScalaSphere 2019
ScalaClean at ScalaSphere 2019Rory Graves
 
Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...
Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...
Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...ESUG
 
Unit Testing Oracle PL/SQL Code: utPLSQL, Excel and More
Unit Testing Oracle PL/SQL Code: utPLSQL, Excel and MoreUnit Testing Oracle PL/SQL Code: utPLSQL, Excel and More
Unit Testing Oracle PL/SQL Code: utPLSQL, Excel and MoreSteven Feuerstein
 
TDD For Mortals
TDD For MortalsTDD For Mortals
TDD For MortalsKfir Bloch
 
Intro to Flux - ReactJS Warsaw #1
Intro to Flux - ReactJS Warsaw #1Intro to Flux - ReactJS Warsaw #1
Intro to Flux - ReactJS Warsaw #1Damian Legawiec
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewShahed Chowdhuri
 

What's hot (20)

Introduction to GraphQL
Introduction to GraphQLIntroduction to GraphQL
Introduction to GraphQL
 
CodeOne Java Debugging Tips
CodeOne Java Debugging TipsCodeOne Java Debugging Tips
CodeOne Java Debugging Tips
 
GraphQL & Relay
GraphQL & RelayGraphQL & Relay
GraphQL & Relay
 
Build Great Triggers Quickly with STP (the Simple Trigger Pattern)
Build Great Triggers Quickly with STP (the Simple Trigger Pattern)Build Great Triggers Quickly with STP (the Simple Trigger Pattern)
Build Great Triggers Quickly with STP (the Simple Trigger Pattern)
 
GraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At CommercetoolsGraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
GraphQL Munich Meetup #1 - How We Use GraphQL At Commercetools
 
Weaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP libraryWeaving aspects in PHP with the help of Go! AOP library
Weaving aspects in PHP with the help of Go! AOP library
 
Setting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce AppsSetting Up CircleCI Workflows for Your Salesforce Apps
Setting Up CircleCI Workflows for Your Salesforce Apps
 
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
React, GraphQL и Relay - вполне себе нормальный компонентный подход (nodkz)
 
GraphQL Europe Recap
GraphQL Europe RecapGraphQL Europe Recap
GraphQL Europe Recap
 
The Apollo and GraphQL Stack
The Apollo and GraphQL StackThe Apollo and GraphQL Stack
The Apollo and GraphQL Stack
 
Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)Refactoring Design Patterns the Functional Way (in Scala)
Refactoring Design Patterns the Functional Way (in Scala)
 
Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl Change Management for Oracle Database with SQLcl
Change Management for Oracle Database with SQLcl
 
ECMAScript 6 Overview & Comparision
ECMAScript 6 Overview & ComparisionECMAScript 6 Overview & Comparision
ECMAScript 6 Overview & Comparision
 
Refactoring to Java 8 (Devoxx UK)
Refactoring to Java 8 (Devoxx UK)Refactoring to Java 8 (Devoxx UK)
Refactoring to Java 8 (Devoxx UK)
 
ScalaClean at ScalaSphere 2019
ScalaClean at ScalaSphere 2019ScalaClean at ScalaSphere 2019
ScalaClean at ScalaSphere 2019
 
Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...
Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...
Towards Modularity in Live Visual Modeling: A case-study with OpenPonk and Ke...
 
Unit Testing Oracle PL/SQL Code: utPLSQL, Excel and More
Unit Testing Oracle PL/SQL Code: utPLSQL, Excel and MoreUnit Testing Oracle PL/SQL Code: utPLSQL, Excel and More
Unit Testing Oracle PL/SQL Code: utPLSQL, Excel and More
 
TDD For Mortals
TDD For MortalsTDD For Mortals
TDD For Mortals
 
Intro to Flux - ReactJS Warsaw #1
Intro to Flux - ReactJS Warsaw #1Intro to Flux - ReactJS Warsaw #1
Intro to Flux - ReactJS Warsaw #1
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
 

Similar to XML Quick Fixes Title

Schematron 2016 and SQF Update
Schematron 2016 and SQF Update Schematron 2016 and SQF Update
Schematron 2016 and SQF Update Octavian Nadolu
 
Schematron & SQF In oXygen
Schematron & SQF In oXygenSchematron & SQF In oXygen
Schematron & SQF In oXygenOctavian Nadolu
 
Exploring the new features in Oxygen XML Editor 20 - Development
Exploring the new features in Oxygen XML Editor 20 - DevelopmentExploring the new features in Oxygen XML Editor 20 - Development
Exploring the new features in Oxygen XML Editor 20 - DevelopmentOctavian Nadolu
 
Enforcing Business Rules - Automatic Fixes
Enforcing Business Rules - Automatic FixesEnforcing Business Rules - Automatic Fixes
Enforcing Business Rules - Automatic FixesOctavian Nadolu
 
Leveraging the Power of AI and Schematron for Content Verification and Correc...
Leveraging the Power of AI and Schematron for Content Verification and Correc...Leveraging the Power of AI and Schematron for Content Verification and Correc...
Leveraging the Power of AI and Schematron for Content Verification and Correc...Octavian Nadolu
 
Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)
Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)
Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)Robbie Averill
 
Angular 2 overview in 60 minutes
Angular 2 overview in 60 minutesAngular 2 overview in 60 minutes
Angular 2 overview in 60 minutesLoiane Groner
 
Mazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml ToolsMazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml ToolsCardinaleWay Mazda
 
apachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfapachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfssuserbb9f511
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Claus Ibsen
 
Apache Camel K - Copenhagen
Apache Camel K - CopenhagenApache Camel K - Copenhagen
Apache Camel K - CopenhagenClaus Ibsen
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - TalkMatthias Noback
 
Getting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular DeveloperGetting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular DeveloperFabrit Global
 

Similar to XML Quick Fixes Title (20)

Schematron QuickFix
Schematron QuickFixSchematron QuickFix
Schematron QuickFix
 
Schematron 2016 and SQF Update
Schematron 2016 and SQF Update Schematron 2016 and SQF Update
Schematron 2016 and SQF Update
 
Schematron & SQF In oXygen
Schematron & SQF In oXygenSchematron & SQF In oXygen
Schematron & SQF In oXygen
 
Schematron step-by-step
Schematron step-by-stepSchematron step-by-step
Schematron step-by-step
 
Exploring the new features in Oxygen XML Editor 20 - Development
Exploring the new features in Oxygen XML Editor 20 - DevelopmentExploring the new features in Oxygen XML Editor 20 - Development
Exploring the new features in Oxygen XML Editor 20 - Development
 
Enforcing Business Rules - Automatic Fixes
Enforcing Business Rules - Automatic FixesEnforcing Business Rules - Automatic Fixes
Enforcing Business Rules - Automatic Fixes
 
XML Quick Fixes
XML Quick FixesXML Quick Fixes
XML Quick Fixes
 
Migration from ASP to ASP.NET
Migration from ASP to ASP.NETMigration from ASP to ASP.NET
Migration from ASP to ASP.NET
 
Leveraging the Power of AI and Schematron for Content Verification and Correc...
Leveraging the Power of AI and Schematron for Content Verification and Correc...Leveraging the Power of AI and Schematron for Content Verification and Correc...
Leveraging the Power of AI and Schematron for Content Verification and Correc...
 
Processing XML with Java
Processing XML with JavaProcessing XML with Java
Processing XML with Java
 
Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)
Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)
Wellington meetup SilverStripe 4 upgrading presentation (Feb 2017)
 
Angular 2 overview in 60 minutes
Angular 2 overview in 60 minutesAngular 2 overview in 60 minutes
Angular 2 overview in 60 minutes
 
Front end technologies
Front end technologiesFront end technologies
Front end technologies
 
Ajax
AjaxAjax
Ajax
 
Mazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml ToolsMazda Use of Third Generation Xml Tools
Mazda Use of Third Generation Xml Tools
 
apachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdfapachecamelk-april2019-190409093034.pdf
apachecamelk-april2019-190409093034.pdf
 
Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2Apache Camel K - Copenhagen v2
Apache Camel K - Copenhagen v2
 
Apache Camel K - Copenhagen
Apache Camel K - CopenhagenApache Camel K - Copenhagen
Apache Camel K - Copenhagen
 
Advanced web application architecture - Talk
Advanced web application architecture - TalkAdvanced web application architecture - Talk
Advanced web application architecture - Talk
 
Getting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular DeveloperGetting Started with React, When You’re an Angular Developer
Getting Started with React, When You’re an Angular Developer
 

More from Octavian Nadolu

YAML Editing and Validation In Oxygen
YAML Editing and Validation In OxygenYAML Editing and Validation In Oxygen
YAML Editing and Validation In OxygenOctavian Nadolu
 
OpenAPI/AsyncAPI Support in Oxygen
OpenAPI/AsyncAPI Support in OxygenOpenAPI/AsyncAPI Support in Oxygen
OpenAPI/AsyncAPI Support in OxygenOctavian Nadolu
 
Validating XML and JSON Documents Using Oxygen Scripting
 Validating XML and JSON Documents Using Oxygen Scripting Validating XML and JSON Documents Using Oxygen Scripting
Validating XML and JSON Documents Using Oxygen ScriptingOctavian Nadolu
 
OpenAPI Editing, Testing, and Documenting
OpenAPI Editing, Testing, and DocumentingOpenAPI Editing, Testing, and Documenting
OpenAPI Editing, Testing, and DocumentingOctavian Nadolu
 
JSON, JSON Schema, and OpenAPI
JSON, JSON Schema, and OpenAPIJSON, JSON Schema, and OpenAPI
JSON, JSON Schema, and OpenAPIOctavian Nadolu
 
Create an Design JSON Schema
Create an Design JSON SchemaCreate an Design JSON Schema
Create an Design JSON SchemaOctavian Nadolu
 
Compare And Merge Scripts
Compare And Merge ScriptsCompare And Merge Scripts
Compare And Merge ScriptsOctavian Nadolu
 
Schematron For Non-XML Languages
Schematron For Non-XML LanguagesSchematron For Non-XML Languages
Schematron For Non-XML LanguagesOctavian Nadolu
 
JSON and JSON Schema in Oxygen
JSON and JSON Schema in OxygenJSON and JSON Schema in Oxygen
JSON and JSON Schema in OxygenOctavian Nadolu
 
HTML5 Editing Validation
HTML5 Editing ValidationHTML5 Editing Validation
HTML5 Editing ValidationOctavian Nadolu
 
Documentation Quality Assurance with ISO Schematron
Documentation Quality Assurance with ISO SchematronDocumentation Quality Assurance with ISO Schematron
Documentation Quality Assurance with ISO SchematronOctavian Nadolu
 
Introduction to Schematron
Introduction to SchematronIntroduction to Schematron
Introduction to SchematronOctavian Nadolu
 
JSON Edit, Validate, Query, Transform, and Convert
JSON Edit, Validate, Query, Transform, and ConvertJSON Edit, Validate, Query, Transform, and Convert
JSON Edit, Validate, Query, Transform, and ConvertOctavian Nadolu
 
Collaboration Tools to Help Improve Documentation Process
Collaboration Tools to Help Improve Documentation ProcessCollaboration Tools to Help Improve Documentation Process
Collaboration Tools to Help Improve Documentation ProcessOctavian Nadolu
 
Comparing and Merging XML Documents in Visual Mode
Comparing and Merging XML Documents in Visual ModeComparing and Merging XML Documents in Visual Mode
Comparing and Merging XML Documents in Visual ModeOctavian Nadolu
 
XSLT 3.0 Improvements - XML Prague 2018
XSLT 3.0 Improvements - XML Prague 2018XSLT 3.0 Improvements - XML Prague 2018
XSLT 3.0 Improvements - XML Prague 2018Octavian Nadolu
 
Enforcing Style Guide Rules for Technical Documents
Enforcing Style Guide Rules for Technical DocumentsEnforcing Style Guide Rules for Technical Documents
Enforcing Style Guide Rules for Technical DocumentsOctavian Nadolu
 

More from Octavian Nadolu (20)

YAML Editing and Validation In Oxygen
YAML Editing and Validation In OxygenYAML Editing and Validation In Oxygen
YAML Editing and Validation In Oxygen
 
Oxygen JSON Editor
Oxygen JSON EditorOxygen JSON Editor
Oxygen JSON Editor
 
OpenAPI/AsyncAPI Support in Oxygen
OpenAPI/AsyncAPI Support in OxygenOpenAPI/AsyncAPI Support in Oxygen
OpenAPI/AsyncAPI Support in Oxygen
 
Validating XML and JSON Documents Using Oxygen Scripting
 Validating XML and JSON Documents Using Oxygen Scripting Validating XML and JSON Documents Using Oxygen Scripting
Validating XML and JSON Documents Using Oxygen Scripting
 
OpenAPI Editing, Testing, and Documenting
OpenAPI Editing, Testing, and DocumentingOpenAPI Editing, Testing, and Documenting
OpenAPI Editing, Testing, and Documenting
 
JSON, JSON Schema, and OpenAPI
JSON, JSON Schema, and OpenAPIJSON, JSON Schema, and OpenAPI
JSON, JSON Schema, and OpenAPI
 
Create an Design JSON Schema
Create an Design JSON SchemaCreate an Design JSON Schema
Create an Design JSON Schema
 
Compare And Merge Scripts
Compare And Merge ScriptsCompare And Merge Scripts
Compare And Merge Scripts
 
JSON Schema Design
JSON Schema DesignJSON Schema Design
JSON Schema Design
 
Schematron For Non-XML Languages
Schematron For Non-XML LanguagesSchematron For Non-XML Languages
Schematron For Non-XML Languages
 
JSON and JSON Schema in Oxygen
JSON and JSON Schema in OxygenJSON and JSON Schema in Oxygen
JSON and JSON Schema in Oxygen
 
HTML5 Editing Validation
HTML5 Editing ValidationHTML5 Editing Validation
HTML5 Editing Validation
 
Documentation Quality Assurance with ISO Schematron
Documentation Quality Assurance with ISO SchematronDocumentation Quality Assurance with ISO Schematron
Documentation Quality Assurance with ISO Schematron
 
Introduction to Schematron
Introduction to SchematronIntroduction to Schematron
Introduction to Schematron
 
Hands on JSON
Hands on JSONHands on JSON
Hands on JSON
 
JSON Edit, Validate, Query, Transform, and Convert
JSON Edit, Validate, Query, Transform, and ConvertJSON Edit, Validate, Query, Transform, and Convert
JSON Edit, Validate, Query, Transform, and Convert
 
Collaboration Tools to Help Improve Documentation Process
Collaboration Tools to Help Improve Documentation ProcessCollaboration Tools to Help Improve Documentation Process
Collaboration Tools to Help Improve Documentation Process
 
Comparing and Merging XML Documents in Visual Mode
Comparing and Merging XML Documents in Visual ModeComparing and Merging XML Documents in Visual Mode
Comparing and Merging XML Documents in Visual Mode
 
XSLT 3.0 Improvements - XML Prague 2018
XSLT 3.0 Improvements - XML Prague 2018XSLT 3.0 Improvements - XML Prague 2018
XSLT 3.0 Improvements - XML Prague 2018
 
Enforcing Style Guide Rules for Technical Documents
Enforcing Style Guide Rules for Technical DocumentsEnforcing Style Guide Rules for Technical Documents
Enforcing Style Guide Rules for Technical Documents
 

Recently uploaded

Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024eCommerce Institute
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Chameera Dedduwage
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaKayode Fayemi
 
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxNikitaBankoti2
 
Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Vipesco
 
Presentation on Engagement in Book Clubs
Presentation on Engagement in Book ClubsPresentation on Engagement in Book Clubs
Presentation on Engagement in Book Clubssamaasim06
 
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, YardstickSaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, Yardsticksaastr
 
George Lever - eCommerce Day Chile 2024
George Lever -  eCommerce Day Chile 2024George Lever -  eCommerce Day Chile 2024
George Lever - eCommerce Day Chile 2024eCommerce Institute
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AITatiana Gurgel
 
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...Pooja Nehwal
 
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceDelhi Call girls
 
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptxMohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptxmohammadalnahdi22
 
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )Pooja Nehwal
 
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfCTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfhenrik385807
 
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...Hasting Chen
 
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...henrik385807
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxraffaeleoman
 
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...Sheetaleventcompany
 
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesVVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesPooja Nehwal
 
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night EnjoyCall Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night EnjoyPooja Nehwal
 

Recently uploaded (20)

Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
Andrés Ramírez Gossler, Facundo Schinnea - eCommerce Day Chile 2024
 
Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)Introduction to Prompt Engineering (Focusing on ChatGPT)
Introduction to Prompt Engineering (Focusing on ChatGPT)
 
If this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New NigeriaIf this Giant Must Walk: A Manifesto for a New Nigeria
If this Giant Must Walk: A Manifesto for a New Nigeria
 
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docxANCHORING SCRIPT FOR A CULTURAL EVENT.docx
ANCHORING SCRIPT FOR A CULTURAL EVENT.docx
 
Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510Thirunelveli call girls Tamil escorts 7877702510
Thirunelveli call girls Tamil escorts 7877702510
 
Presentation on Engagement in Book Clubs
Presentation on Engagement in Book ClubsPresentation on Engagement in Book Clubs
Presentation on Engagement in Book Clubs
 
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, YardstickSaaStr Workshop Wednesday w/ Lucas Price, Yardstick
SaaStr Workshop Wednesday w/ Lucas Price, Yardstick
 
George Lever - eCommerce Day Chile 2024
George Lever -  eCommerce Day Chile 2024George Lever -  eCommerce Day Chile 2024
George Lever - eCommerce Day Chile 2024
 
Microsoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AIMicrosoft Copilot AI for Everyone - created by AI
Microsoft Copilot AI for Everyone - created by AI
 
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
Navi Mumbai Call Girls Service Pooja 9892124323 Real Russian Girls Looking Mo...
 
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort ServiceBDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
BDSM⚡Call Girls in Sector 93 Noida Escorts >༒8448380779 Escort Service
 
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptxMohammad_Alnahdi_Oral_Presentation_Assignment.pptx
Mohammad_Alnahdi_Oral_Presentation_Assignment.pptx
 
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
WhatsApp 📞 9892124323 ✅Call Girls In Juhu ( Mumbai )
 
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdfCTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
CTAC 2024 Valencia - Henrik Hanke - Reduce to the max - slideshare.pdf
 
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
Re-membering the Bard: Revisiting The Compleat Wrks of Wllm Shkspr (Abridged)...
 
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
CTAC 2024 Valencia - Sven Zoelle - Most Crucial Invest to Digitalisation_slid...
 
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptxChiulli_Aurora_Oman_Raffaele_Beowulf.pptx
Chiulli_Aurora_Oman_Raffaele_Beowulf.pptx
 
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
No Advance 8868886958 Chandigarh Call Girls , Indian Call Girls For Full Nigh...
 
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara ServicesVVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
VVIP Call Girls Nalasopara : 9892124323, Call Girls in Nalasopara Services
 
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night EnjoyCall Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
Call Girl Number in Khar Mumbai📲 9892124323 💞 Full Night Enjoy
 

XML Quick Fixes Title

  • 1. XML Quick Fixes Octavian Nadolu octavian_nadolu@oxygenxml.com @OctavianNadolu
  • 2. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Overview ● Generic Quick Fix support in oXygen ● Quick fix support for XML validated against XSD ● Quick fix support for XML validated against Relax NG ● Schematron Quick Fix language ● Developing custom quick fixes in Schematron
  • 3. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Quick Fixes ● It is important to have documents without errors ● Not all users know how to fix the errors ● Suggestions to fix errors ● Similar to spell check proposals
  • 4. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Proposals to Solve Errors ● Analyze the errors and propose valid fixes ● Some errors can be fixed automatically ● Required element missing ● Attribute not allowed ● Write your own quick fixes
  • 5. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. <oXygen/> Quick Fixes Support ● For XSLT documents ● For Ant Build documents http://www.oxygenxml.com/events/2014/webinar_xslt_quick_fixes.html ● For XML documents – validation against XML Schema – validation against Relax NG – validation against Schematron
  • 6. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Using Quick Fixes ● Placing the caret on error highlight will display a red bulb button ● Show fix proposals: ● Click the red bulb ● Invoke the quick fix menu with Alt + 1
  • 7. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Apply Quick Fix ● Just select the proposal ● Available in both Text and Author page ● Reconfigure on document modification ● Undo modification
  • 8. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. XML Quick Fixes Solve errors that appear in an XML document ● Fixes generated automatically – validation against XML Schema – validation against Relax NG ● Fixes provided by the developer – validation against Schematron
  • 9. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. XML Validated with XSD ● Quick fixes for common errors – A required attribute is missing – An element is invalid in the current context – References to an invalid ID ...
  • 10. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. XML Validated with Relax NG ● Quick fixes for common validation errors – A required attribute is missing – An element is invalid in the current context – References to an invalid ID ● Both RNG and RNC schemas are supported
  • 11. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Benefits ● Fixes generated automatically for common errors ● A better understanding of the problem ● Solve errors with just one click
  • 12. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. XML Validated with Schematron ● Define custom errors in Schematron ● Create custom fixes with SQF
  • 13. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Example A group of technical writers works on a documentation project
  • 14. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Rules Rules to maintain a common language
  • 15. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Business Rules Examples ● Bold element is not allowed in title ● An external link requires the @format attribute ● Semicolon is not allowed after list item ● Each row must have the same number of cells ● Ordered lists are not allowed
  • 16. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Schematron Rules Custom rules imposed with Schematron Custom fixes offered by SQF
  • 17. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Custom Fixes Examples Bold element is not allowed in title Remove bold styling An external link requires the @format attribute Add @format attribute Semicolon is not allowed after list item Remove semicolon Replace semicolon with full stop Each row must have the same number of cells Add missing cells Ordered lists are not allowed Convert ordered list to unordered one
  • 18. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Schematron Quick Fixes (SQF) ● Extends the Schematron language ● SQF initiated by Nico Kutscherauer/data2type ● Open source project www.schematron-quickfix.com github.com/schematron-quickfix/sqf
  • 19. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Schematron Quick Fixes Spec www.w3.org/community/quickfix schematron-quickfix.github.io/sqf
  • 20. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF in Schematron ● Associated with assert and report elements <sch:rule context="title"> <sch:report test="exists(b)" sqf:fix="resolveBold"> Bold element is not allowed in title.</sch:report> …........... </rule> <sch:rule context="xref"> <sch:assert test="matches(@href, '^http(s?)://')" sqf:fix="addHttp addHttps"> An external link should start with http(s).</sch:assert> …........... </sch:rule>
  • 21. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Schematron Quick Fix <sqf:fix id="resolveBold"> <sqf:description> <sqf:title>Change the bold element into text</sqf:title> <sqf:p>Removes the bold (b) markup and keeps the text content.</sqf:p> </sqf:description> <sqf:replace match="b" select="text()"/> </sqf:fix> Operation ID Description Title
  • 22. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Schematron Quick Fix ● IDID - an unique ID, used to refer the fix ● Title - represents the name of the quick fix ● Description - details about the fix ● Operations - 4 basic operations ● Add – adds one or more nodes ● Delete – deletes the matched nodes ● Replace – replace a node by another one ● StringReplace – replace sub-strings of text nodes
  • 23. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “add” operation ● <sqf:add> element allows you to add one or more nodes to the XML instance <sch:rule context="xref"> <sch:assert test="@format" sqf:fix="addFormat"> An external link requires the @format attribute.</sch:assert> <sqf:fix id="addFormat"> <sqf:description> <sqf:title>Add @format attribute</sqf:title> </sqf:description> <sqf:add node-type="attribute" target="format"/> </sqf:fix> </sch:rule>
  • 24. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “add” operation Defines the node type of the node to be added: element, attribute, pi, comment, keep Defines nodes or an atomic value as the content of the node to be added Defines the qualified name of the node to be added The position of the nodes to be added relative to the anchor node: alter, before, first-child, last-child Describes the content of the node to be added. The behavior is similar to the content of the <xsl:template> element. Additionally, the elements <sch:value-of> and <sch:let> are available. The match attribute defines the context for the add operation. If it is missing, then the rule context is used.
  • 25. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “replace” operation ● <sqf:replace> element specify the nodes to be replaced and the replacing content <sch:rule context="ol"> <sch:assert test="false()" sqf:fix="convertOLinUL"> Ordered lists are not allowed, use unordered lists instead.</sch:assert> <sqf:fix id="convertOLinUL"> <sqf:description> <sqf:title>Convert ordered list to unordered list</sqf:title> </sqf:description> <sqf:replace target="ul" node-type="element" select="child::node()"/> </sqf:fix> </sch:rule>
  • 26. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “replace” operation Defines the node type of the node to be added: element, attribute, pi, comment, keep. If is missing a fragment will be inserted. Defines the qualified name of the node to be added Defines nodes or values as the content of the node to be added Describes the content of the node to be added. The behavior is similar to the content of the <xsl:template> element. Additionally, the elements <sch:value-of> and <sch:let> are available. The match attribute defines nodes to be replaced and the context for the operation. If it is missing, then the rule context is used.
  • 27. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “delete” operation ● <sqf:delete> element specify the nodes for the deletion <sch:rule context="title"> <sch:report test="comment()" sqf:fix="removeComment"> Comments are not allowed in the title</sch:report> <sqf:fix id="removeComment"> <sqf:description> <sqf:title>Delete comments</sqf:title> </sqf:description> <sqf:delete match="comment()"/> </sqf:fix> </sch:rule>
  • 28. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “delete” operation The match attribute defines nodes to be deleted. The default value is “.”. If the match attribute is not specified the context node will be deleted.
  • 29. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “stringReplace” operation ● <sqf:stringReplace> element defines the text or nodes which will replace the matched substrings <sch:rule context="li"> <sch:report test="matches(text()[last()], ';$')" sqf:fix="replaceSemicolon" role="warn"> Semicolon is not allowed after list item.</sch:report> <sqf:fix id="replaceSemicolon"> <sqf:description> <sqf:title>Replace semicolon with full stop</sqf:title> </sqf:description> <sqf:stringReplace match="text()" regex=";$">.</sqf:stringReplace> </sqf:fix> </sch:rule>
  • 30. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF “stringReplace” operation The regex attribute specifies a regular expression that defines the substrings of the text nodes to be replaced. Describes the content to be inserted. The behavior is similar to the content of the <xsl:template> element. Additionally, the elements <sch:value-of> and <sch:let> are available. Defines the nodes or values as the content of the node to be inserted The match attribute defines text nodes to be processed
  • 31. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Formatting Inserted Content ● By default, oXygen performs line indenting ● Use the @xml:space attribute and set its value to preserve for full control of the generated fragment ● Whitespace is generated similar to XSLT processing: – No whitespace for element only content – Whitespace is significant in mixed content
  • 32. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Formatting Inserted Content ● <xsl:text> - format content and keep automatic indentation ● @xml:space – preserve space <sqf:add position="last-child"> <row> <entry>First column</entry> <entry>Second column</entry> </row> </sqf:add> <sqf:add node-type="element" target="codeblock" xml:space="preserve"> /* a long sample program */ Do forever Say "Hello, World" End</sqf:add> <sqf:add position="last-child"> <row><xsl:text> </xsl:text> <entry>First column</entry><xsl:text> </xsl:text> <entry>Second column</entry><xsl:text> </xsl:text> </row><xsl:text> </xsl:text> </sqf:add>
  • 33. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. The Use-When Condition ● Used to make available a quick fix or a specific operation only if certain conditions are met ● The condition of the use-when attribute is an XPath expression <sch:rule context="li"> <sch:report test="matches(text()[last()], ';$')" sqf:fix="replaceSemicolon"> Semicolon is not allowed after list item.</sch:report> <sqf:fix id="replaceSemicolon" use-when="position() = last()"> <sqf:description> <sqf:title>Replace semicolon with full stop</sqf:title> </sqf:description> <sqf:stringReplace regex=";$" match="text()">.</sqf:stringReplace> </sqf:fix> </sch:rule>
  • 34. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Additional SQF Elements <sqf:call-fix> – calls another fix within a fix <sqf:fixes> – global element that contains fixes <sqf:group> – defines a group of fixes that can be referred <sqf:keep> – used to copy the selected nodes <sqf:user-entry>* – defines a value that must be set manually by the user *not supported in <oXygen/> 17 schematron-quickfix.github.io/sqf
  • 35. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF Framework ● Support to edit SQF files ● Support to edit SQF embedded in Schematron ● Validation as you type ● Content completion – SQF elements and attributes – XPath functions – XSLT functions and variables – Quick Fix ids ● Search and Refactoring
  • 36. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF Quick Fixes benefits ● Create custom quick fixes for errors ● Use the power of Schematron and XSLT ● Custom solution for different type of documents ● Create refactoring actions using SQF
  • 37. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. SQF for any XML ● Schematron can be applied on any XML ● Fixes can be provided for any XML ● SQF used in development – XSLT – XML Schema – Relax NG ...
  • 38. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Projects using SQF ● <oXygen/> DITA framework ● <oXygen/> User Manual https://github.com/oxygenxml/userguide ● DIM project https://github.com/oxygenxml/dim ● TEI http://wiki.tei-c.org/index.php/Category:Schematron
  • 39. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Related SQF Projects ● Escali Schematron engine http://schematron-quickfix.com/escali_xsm.html ● Escali Schematron command line tool ● Oxygen plugin for invoking Escali Schematron
  • 40. XML Quick FixesXML Quick Fixes Copyright @ Syncro Soft, 2015. All rights reserved. Thank you! Questions? <oXygen/> XML Editor http://www.oxygenxml.com octavian_nadolu@oxygenxml.com @OctavianNadolu