https://github.com/octavianN/Schematron-step-by-step
Schematron is a very simple and powerful language. It is used in various domains (financial, insurance, government, and technical publishing sectors) for quality assurance, validating business rules, constraint checking, or data reporting. During the presentation, I will show you how to create Schematron rules step-by-step, apply the rules over one or multiple documents, and also how to integrate Schematron rules in your development process
Schematron is a rule-based validation language for making assertions about presence or absence of certain patterns in XML documents. With Schematron, you can express constraints in a way that you cannot perform with other schemas (like XSD, RNG, or DTD). XSD, RNG, and DTD schemas define structural aspects and data types of the XML documents and can be used to check big things, such as if an element is allowed in a specific context, or if an attribute is allowed for an element. But with Schematron, you can create your custom rules specific to your project, and check things such as if the text from an element respects a particular constraint, or verify data inter-dependencies such as if a start date from an attribute value is set before the end date attribute value.
In a Schematron document, you can add a collection of rules that contain tests. The Schematron content is written as an XML document using a small number of elements, and this makes it easy to understand and write, even for people that are not programmers.
Schematron is a rule-based validation language. Has become an ISO standard since 2006 and it is a very popular language in the XML world. In the last few years, Schematron started to be used more and more and in numerous domains. In this tutorial you will learn how to create ISO Schematron schemas, how to use XPath to express your constraints, as well as how to validate your XML files using an ISO Schematron schema and create a report.
In this tutorial I will present how to create an ISO Schematron schema from scratch. I will explain the ISO Schematron schema structure, elements and attributes, and how you can express custom rules and constraints.
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...Edureka!
** Python Certification Training: https://www.edureka.co/python **
This Edureka Python Flask tutorial will cover all the fundamentals of Flask. It will also explain how you can develop your own website using Flask in Python.
Introduction to Flask
Installing Flask
Flask Application
Routing in Flask
Variable Rules in Flask
URL Binding in Flask
HTTP Methods using Flask
Templates in Flask
Static Files in Flask
Request Objects in Flask
Cookies in Flask
Redirects and Errors in Flask
Flask Extensions
Conclusion
Follow us to never miss an update in the future.
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
** Python Certification Training: https://www.edureka.co/python **
This Edureka PPT on File Handling with Python covers all the important aspects of using files in Python right from the introduction to what fields are, all the way till checking out the major aspects of working with files and using the code-first approach to understand them better.
Python Tutorial Playlist: https://goo.gl/WsBpKe
Blog Series: http://bit.ly/2sqmP4s
Follow us to never miss an update in the future.
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Presentation of web-based service developed within REVEAL and InVID on Experts’ Meeting on Digital Image Authentication and Classification, December 6, 2017.
Schematron is a rule-based validation language. Has become an ISO standard since 2006 and it is a very popular language in the XML world. In the last few years, Schematron started to be used more and more and in numerous domains. In this tutorial you will learn how to create ISO Schematron schemas, how to use XPath to express your constraints, as well as how to validate your XML files using an ISO Schematron schema and create a report.
In this tutorial I will present how to create an ISO Schematron schema from scratch. I will explain the ISO Schematron schema structure, elements and attributes, and how you can express custom rules and constraints.
Python Flask Tutorial For Beginners | Flask Web Development Tutorial | Python...Edureka!
** Python Certification Training: https://www.edureka.co/python **
This Edureka Python Flask tutorial will cover all the fundamentals of Flask. It will also explain how you can develop your own website using Flask in Python.
Introduction to Flask
Installing Flask
Flask Application
Routing in Flask
Variable Rules in Flask
URL Binding in Flask
HTTP Methods using Flask
Templates in Flask
Static Files in Flask
Request Objects in Flask
Cookies in Flask
Redirects and Errors in Flask
Flask Extensions
Conclusion
Follow us to never miss an update in the future.
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
** Python Certification Training: https://www.edureka.co/python **
This Edureka PPT on File Handling with Python covers all the important aspects of using files in Python right from the introduction to what fields are, all the way till checking out the major aspects of working with files and using the code-first approach to understand them better.
Python Tutorial Playlist: https://goo.gl/WsBpKe
Blog Series: http://bit.ly/2sqmP4s
Follow us to never miss an update in the future.
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Presentation of web-based service developed within REVEAL and InVID on Experts’ Meeting on Digital Image Authentication and Classification, December 6, 2017.
List of Modules
1-Introduction to Joget Workflow
2-Setting up Joget Workflow
3-Designing your first Process
4-Localizing your Joget Workflow
5-Designing your first Form
6-Using your first Process Tool
7-Designing your first Datalist
8-Designing your first Userview
9-Hash Variable
10-SLA and Deadlines
12-Version Control
13-Improving your Form design and Presentation
14-Introduction to Reporting
15-Introduction to Plugin Architecture
16-Preparing Development Environment
17-Building Plugins
18-Integrating with External System
19-Doing more with your Process Design
20-Basic System Administration
21-Best Practices on Application Building
It is a basic presentation which can help you understand the basic concepts about Graphql and how it can be used to resolve the frontend integration of projects and help in reducing the data fetching time
This presentation also explains the core features of Graphql and why It is a great alternative for REST APIs along with the procedure with which we can integrate it into our projects
All common business functions (accounting, customer relationship management, operations, sales, marketing, service, warehousing, and more) come in one package – easy to set up and use. Complete visibility and better control help running end-to-end business processes professionally.
This presentation educates you about Python MySQL - Database Connection, Python MySQL - Database Connection, Establishing connection with MySQL using python with sample program.
For more topics stay tuned with Learnbay.
A short presentation that explains the internals of the Spring Boot framework. Includes an example of a starter and an autoconfig artifac, and a github repo:
https://github.com/MichelSchudel/springbootunderdahood
This Edureka Python tutorial is a part of Python Course (Python Tutorial Blog: https://goo.gl/wd28Zr) and will help you in understanding what exactly is Python and its various applications. It also explains few Python code basics like data types, operators etc. Below are the topics covered in this tutorial:
1. Introduction to Python
2. Various Python Features
3. Python Applications
4. Python for Web Scraping
5. Python for Testing
6. Python for Web Development
7. Python for Data Analysis
SAP Analytics Cloud combines BI, planning, predictive, and augmented analytics capabilities into one simple cloud environment. Powered by AI technologies and an in-memory database, it is one of the most advanced analytics solutions available today.
It is important to have documents without errors, but not all users know how to fix the errors from the documents. And even if they do know, ideally they should use a quick and automated solution.
oXygen does not only report errors, it also helps you correct them automatically through the Quick Fix support, which provides automatic fixes for XML documents validated against XSD, Relax NG, and Schematron schemas. In the case of Schematron, the schema developer takes full control over the Quick Fix actions, being able to offer custom solutions to any detected issue using the Schematron Quick Fix language.
The presentation includes:
- 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
List of Modules
1-Introduction to Joget Workflow
2-Setting up Joget Workflow
3-Designing your first Process
4-Localizing your Joget Workflow
5-Designing your first Form
6-Using your first Process Tool
7-Designing your first Datalist
8-Designing your first Userview
9-Hash Variable
10-SLA and Deadlines
12-Version Control
13-Improving your Form design and Presentation
14-Introduction to Reporting
15-Introduction to Plugin Architecture
16-Preparing Development Environment
17-Building Plugins
18-Integrating with External System
19-Doing more with your Process Design
20-Basic System Administration
21-Best Practices on Application Building
It is a basic presentation which can help you understand the basic concepts about Graphql and how it can be used to resolve the frontend integration of projects and help in reducing the data fetching time
This presentation also explains the core features of Graphql and why It is a great alternative for REST APIs along with the procedure with which we can integrate it into our projects
All common business functions (accounting, customer relationship management, operations, sales, marketing, service, warehousing, and more) come in one package – easy to set up and use. Complete visibility and better control help running end-to-end business processes professionally.
This presentation educates you about Python MySQL - Database Connection, Python MySQL - Database Connection, Establishing connection with MySQL using python with sample program.
For more topics stay tuned with Learnbay.
A short presentation that explains the internals of the Spring Boot framework. Includes an example of a starter and an autoconfig artifac, and a github repo:
https://github.com/MichelSchudel/springbootunderdahood
This Edureka Python tutorial is a part of Python Course (Python Tutorial Blog: https://goo.gl/wd28Zr) and will help you in understanding what exactly is Python and its various applications. It also explains few Python code basics like data types, operators etc. Below are the topics covered in this tutorial:
1. Introduction to Python
2. Various Python Features
3. Python Applications
4. Python for Web Scraping
5. Python for Testing
6. Python for Web Development
7. Python for Data Analysis
SAP Analytics Cloud combines BI, planning, predictive, and augmented analytics capabilities into one simple cloud environment. Powered by AI technologies and an in-memory database, it is one of the most advanced analytics solutions available today.
It is important to have documents without errors, but not all users know how to fix the errors from the documents. And even if they do know, ideally they should use a quick and automated solution.
oXygen does not only report errors, it also helps you correct them automatically through the Quick Fix support, which provides automatic fixes for XML documents validated against XSD, Relax NG, and Schematron schemas. In the case of Schematron, the schema developer takes full control over the Quick Fix actions, being able to offer custom solutions to any detected issue using the Schematron Quick Fix language.
The presentation includes:
- 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
Documentation Quality Assurance with ISO SchematronOctavian Nadolu
It is important to have quality control over the XML documents in your project. You do this using Schematron schema in combination with other schemas (such as XSD, RNG, or DTD). Schematron solves the limitation that other types of schema have when validating XML documents because it allows the schema author to define the tests and control the messages that are presented to the user. The validation problems are more accessible to users and it ensures that they understand the problem.
Schematron is a language that ca be used to define rules for quality assurance an consistency in the XML documents. Reporting detected inconsistencies and error conditions enables content writers to correct the problems.
With Schematron you can define different type of problems (such as code smell, bug, or vulnerability) and you can set different severities (such us: info, warn, error, fatal) to the messages. By analyzing the report you can give a verdict if the project build fails, or is with warnings, or is successful.
One of an Information Architect’s main roles is to develop and maintain an organization’s Information Model. But it’s usually up to other roles—tools and editorial, specifically—to express and enforce the Model. Wouldn’t it be nice if during the act of writing the Information Model, the IA was simultaneously creating the automatic enforcement and expression of the Model in the authoring environment?
In this presentation, George and Dawn show how an IA can author an organization’s Information Model using DITA topics and maps—as is the industry standard practice—but take it one step further, with the IA’s input being used as the specifications for auto-generated Schematron rules and tool tips.
Experience Mazda Zoom Zoom Lifestyle and Culture by Visiting and joining the Official Mazda Community at http://www.MazdaCommunity.org for additional insight into the Zoom Zoom Lifestyle and special offers for Mazda Community Members. If you live in Arizona, check out CardinaleWay Mazda's eCommerce website at http://www.Cardinale-Way-Mazda.com
Accelerate Your Analytic Queries with Amazon Aurora Parallel Query (DAT362) -...Amazon Web Services
Amazon Aurora with MySQL compatibility includes several features to improve query performance, while still maintaining full MySQL compatibility. One such feature is Parallel Query, which provides faster analytic queries over current data by pushing query processing down to thousands of CPUs in the storage layer, achieving performance gains of up to two orders of magnitude. Learn how to take advantage of this and other recent Aurora features to implement high performance distributed queries for your MySQL-based applications.
In this workshop, learn how to create a serverless data lake architecture. Understand how to ingest data at scale from multiple data sources, how to transform the data, and how to catalog it to make it available for querying using a variety of tools. Also learn how to set up governance and data quality controls.
Speakers:
Rajanikanth Bhargava Chilakapati - Solutions Architect, AWS
Karl Hart - Solutions Architect, AWS
John Pignata - Startup Solutions Architect, AWS
Best Practices for Scalable Monitoring (ENT310-S) - AWS re:Invent 2018Amazon Web Services
A successful transition to a modern elastic, containerized, microservice architecture requires automating all things, including your monitoring and alerting infrastructure. In this talk, we share some of the techniques and best practices we learned at New Relic for applying "infrastructure as code" (IaC) techniques to monitoring and alerting during our 10-year journey from a single-region monolithic application to a global multi-region deployment of hundreds of microservices. This session is brought to you by AWS partner, New Relic.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Oxygen provides full support for editing and validating YAML documents. You can use Oxygen's editor to create, modify, and format YAML files with its intelligent editing features, including syntax highlighting, code folding, content completion, and error checking. Oxygen also offers validation against JSON schemas and supports customization of schemas for specific projects or file types. Additionally, you can visualize and navigate through your YAML structures with Oxygen's Outline view.
https://www.oxygenxml.com/events/2023/webinar_exploring_oxygen_yaml_support.html
https://www.oxygenxml.com/json_editor/yaml.html
Oxygen JSON Editor is a specialized tool designed for editing JSON documents. It offers a wide range of features and views, including Text, Grid, and Author editing modes, along with Design mode for JSON Schema. The intuitive interface and comprehensive set of tools make it easy to navigate, understand, and modify your JSON, JSON Schema files, as well as YAML and OpenAPI files.
Leveraging the Power of AI and Schematron for Content Verification and Correc...Octavian Nadolu
The journey into the world of AI continues by exploring its application in conjunction with Schematron and Schematron Quick Fix (SQF) for content verification and correction. In this webinar, we aim to offer a comprehensive overview of AI, highlight the potential advantages it brings, and shed light on the challenges we encounter when utilizing AI for these purposes.
Don't miss this opportunity to gain valuable insights into the intersection of AI and content validation by exploring topics such as:
Artificial Intelligence (AI)
OpenAI/Generative Pre-trained Transformer
Schematron and Schematron Quick Fixes (SQF)
Implementing AI in Schematron and SQF
Examples of AI-driven Schematron and SQF Solutions
Benefits of Using AI in Schematron and SQF
https://www.oxygenxml.com/events/2022/webinar_openapi_support_in_oxygen.html
OpenAPI is a community-driven open specification that defines a language-agnostic interface used to describe, produce, consume, and visualize RESTful APIs and web services.
AsyncAPI started as an adaptation of the OpenAPI specification, used for describing asynchronous messaging APIs.
OpenAPI/AsyncAPI documents describe the API (or its elements) and are represented in either YAML or JSON formats.
During this live webinar, you will discover the support offered in Oxygen to create, edit, and validate OpenAPI/AsyncAPI documents as well as how to test, and generate documentation for OpenAPI documents. By joining this live event, you will get the chance to learn the following:
How to create OpenAPI/AsyncAPI documents
How to edit and validate OpenAPI/AsyncAPI documents
How edit OpenAPI/AsyncAPI documentation in Author mode
How to generate documentation for OpenAPI components in HTML format
How to test an OpenAPI, execute API requests, and validate responses
How to create and run test scenarios
Validating XML and JSON Documents Using Oxygen ScriptingOctavian Nadolu
https://www.oxygenxml.com/events/2023/webinar_validating_xml_and_json_documents_using_oxygen_scripting.html
This presentation covers details about this newly implemented validation scripting support, as well as showing examples of how to use it efficiently. You will learn how to validate files or directories from a command line interface. You can check that your documents are valid from an integration server and you can generate reports in several formats (text, XML, JSON, or an HTML visual format). We won’t be stopping there, as we will also be looking at how you can use transformation or comparison scripts.
During this 1-hour live event, we will focus on showing you the following:
How to use the Validation command-line script
How to validate against a specific schema file
How to validate using the default Oxygen validation scenarios
How to use validation scenario from either a scenarios file or a project file
How to generate the validation results in various formats (YAML, JSON, XML, HTML)
How to run validation on an continuous integration server CI/CD
How to use the Transformation command-line script
How to use the Comparison/Merge command-line script
OpenAPI is a community-driven open specification that defines a language-agnostic interface used to describe, produce, consume, and visualize RESTful APIs and web services. OpenAPI documents describe the API (or its elements) and are represented in either YAML or JSON formats.
Vide Demo:
https://www.oxygenxml.com/events/2022/webinar_openapi_editing_testing_and_documenting.html
In this presentation, you will learn about the new JSON and JSON Schema support added in the latest Oxygen versions, as well as the support for OpenAPI, AsyncAPI, and JSON-LD. Get the chance to discover the following:
- Smart editing of JSON documents based on the JSON Schema
- Specialized JSON tools
- Editing JSON Schema in design mode
- The OpenAPI, AsyncAPI, JSON-LD support
https://youtu.be/r5SLk3XLOUs
In this presentation you will get to see how the Design mode can help both content authors who want to visualize or understand a schema and schema designers who develop complex schemas. You will also get the chance to learn:
- How to create JSON schemas from scratch
- How to use the new Pallet view to add new components
- How to use the drag-and-drop support to design your JSON Schema
- How to use refactoring actions
- How to visualize and edit complex JSON Schemas
Oxygen Compare and Merge Scripts
In this presentation I cover in detail this compare and merge scripting support, as well as showing you examples on how to use it efficiently, showing you the following:
- The Compare and Merge Files Command-Line Script - used to compare and merge files and get the comparison results in various formats (YAML, JSON, XML, HTML).
- The Compare and Merge Directories Command-Line Script - with many options to choose from, such as the comparison mode (content, binary, timestamp), the algorithm to be used for the comparison, the "strength" of the comparison algorithm, various "include/exclude" type file filters, various "ignore" type options to refine the comparison results.
- Generating File or Directory Comparison HTML Reports - the support to save the comparison made with Oxygen XML Editor in HTML format.
https://www.oxygenxml.com/events/2021/webinar_the_new_oxygen_compare_and_merge_scripts.html
https://www.oxygenxml.com/events/2021/webinar_the_new_json_schema_diagram_editor.html
A webinar in which we will show you how Oxygen now offers even more powerful tools that allow you to design, develop, and edit JSON Schemas. We will be focusing on presenting features ranging from the new intuitive and expressive visual schema Design mode, all the way up to the JSON Schema documentation generator that includes diagram images for each component.
During this live webinar, you will get the chance to take an in-depth look at all of these features, as well as learn:
How to create JSON Schemas from scratch
How to visualize and edit complex JSON Schemas
How to generate JSON Schema documentation
Schematron is designed to be used for XML documents. The definition of the Schematron is "A language for making assertions about the presence or absence of patterns in XML documents". But why we should not use it also for non-XML languages, such as JSON, Markdown, or even HTML5?
Oxygen provides a specialized JSON and JSON Schema editor with a variety of editing features, helper views, and useful tools. In this presentation you will see an overview of the JSON support, as well as the new additions, such as:
- An instance generator from a JSON Schema
- XSD to JSON schema converter
- Generate JSON Schema from JSON instance
- JSON Schema annotations
- Schematron validation for JSON
Oxygen provides support for generating HTML5 and XHTML5 documents, and support for editing and validating XHTML5 files. Now Oxygen Editor introduces full HTML5 support, providing features such as:
- Specialized text-based and visual-based editing
- Syntax highlights based on the HTML5 specification
- Content completion based on the HTML5 schema
- Outline view that displays the document structure
- Validation against the W3C validator, including batch validation
- Emmet plugin - toolkit for high-speed HTML coding and editing
This presentation is meant to explain the JSON languages and the support that you need when this type of documents are edited, validated, queried, or converted. You will also discover what languages and tools can be used when working with these types of documents.
JSON it is a common format for data interchange and is adopted by applications as a way to store data. It is a self describing languages, the structure is defined hierarchically, and has schema to define its structure.
A JSON Schema can be used the define JSON documents structure. It is an Internet Draft at the IETF and not many tools support it, but it is actively developed.
JSON Edit, Validate, Query, Transform, and ConvertOctavian Nadolu
This presentation will explore the JSON features added in Oxygen 20.1 and the new features that will be available in Oxygen 21, including:
- Validating JSON documents against a JSON Schema
- The new redesigned Outline view for JSON documents
- Content completion assistance for JSON, based on the JSON Schema
- Defining code Templates for JSON
- Associating a JSON Schema directly in JSON documents
- Executing XPath expressions over multiple JSON files
- Transforming JSON documents using XSLT
The Power Of Schematron Quick Fixes - XML Prague 2019Octavian Nadolu
In this presentation, you will discover the new additions for the SQF language and how you can create useful and interesting quick fixes for the Schematron rules defined in your project. It will include examples of quick fixes for several type of projects and using abstract quick fixes to enable easier creation of specific fixes or XSLT code for more complex fixes. You will also discover some use cases for quick fixes that extend your Schematron scope.
Collaboration Tools to Help Improve Documentation ProcessOctavian Nadolu
An in-depth view of our documentation workflow to show real world use-cases of how you can use Oxygen products to efficiently and thoroughly collaborate with everyone involved in the documentation process.
Exploring the new features in Oxygen XML Editor 20 - DevelopmentOctavian Nadolu
Explore some of the new features and improvements that were added in Oxygen XML Editor 20 on the development part. The subjects that we will discuss include:
Productivity enhancements for XSLT developers
Saxon update
Schematron improvements
Schematron Quick Fix Update
JSON
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaYara Milbes
Discover the transformative power of the WhatsApp API in our latest SlideShare presentation, "Top 7 Unique WhatsApp API Benefits." In today's fast-paced digital era, effective communication is crucial for both personal and professional success. Whether you're a small business looking to enhance customer interactions or an individual seeking seamless communication with loved ones, the WhatsApp API offers robust capabilities that can significantly elevate your experience.
In this presentation, we delve into the top 7 distinctive benefits of the WhatsApp API, provided by the leading WhatsApp API service provider in Saudi Arabia. Learn how to streamline customer support, automate notifications, leverage rich media messaging, run scalable marketing campaigns, integrate secure payments, synchronize with CRM systems, and ensure enhanced security and privacy.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Developing Distributed High-performance Computing Capabilities of an Open Sci...Globus
COVID-19 had an unprecedented impact on scientific collaboration. The pandemic and its broad response from the scientific community has forged new relationships among public health practitioners, mathematical modelers, and scientific computing specialists, while revealing critical gaps in exploiting advanced computing systems to support urgent decision making. Informed by our team’s work in applying high-performance computing in support of public health decision makers during the COVID-19 pandemic, we present how Globus technologies are enabling the development of an open science platform for robust epidemic analysis, with the goal of collaborative, secure, distributed, on-demand, and fast time-to-solution analyses to support public health.
2. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
About the Author
● Software architect
● 15+ years XML technologies experience
● Contributor to a number of XML-related open source
projects
● Editor of Schematron QuickFix specification developed
by a W3C community group
3. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Overview
● Schematron history
● Schematron step-by-step
● Schematron in the development process
● Schematron for technical and non-technical users
● Schematron Quick Fixes
6. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron History
● Schematron was invented by Rick Jelliffe
● Schematron 1.0 (1999), 1.3 (2000), 1.5 (2001)
● ISO Schematron (2006, 2010, 2016)
7. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Why Schematron?
● You can express constraints in a way that you cannot
perform with other schemas (like XSD, RNG, or DTD).
● XSD, RNG, and DTD schemas define structural aspects and data
types of the XML documents
● Schematron allows you to create custom rules specific to your
project
12. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
XML
A list of books from a bookstore:
...
<book price="75">
<title>XSLT 2.0 Programmer's Reference</title>
<author>Michael Kay</author>
<isbn>0764569090</isbn>
</book>
...
13. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
<assert>
An assert generates a message when a test statement
evaluates to false
<assert test="@price > 10">The book price is too small</assert>
14. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
<report>
A report generates a message when a test statement
evaluate to true.
<report test="@price > 1000">The book price is too big</report>
15. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
<rule>
A rule defines a context on which a list of assertions will
be tested, and is comprised of one or more assert or
report elements.
<rule context="book">
<assert test="@price > 10">The book price is too small</assert>
<report test="@price > 1000">The book price is too big</report>
</rule>
16. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
<pattern>
A set of rules giving constraints that are in some way
related
<pattern>
<rule context="book">
<assert test="@price > 10">The book price is too small</assert>
<report test="@price > 1000">The book price is too big</report>
</rule>
</pattern>
17. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
<schema>
The top-level element of a Schematron schema.
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
<pattern>
<rule context="book">
<assert test="@price > 10">The book price is too small</assert>
<report test="@price > 1000">The book price is too big</report>
</rule>
</pattern>
</schema>
18. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Apply Schematron
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
<pattern>
<rule context="book">
<assert test="@price > 10">The book price is too small</assert>
<report test="@price > 1000">The book price is too big</report>
</rule>
</pattern>
</schema>
...
<book price="7">
<title>XSLT 2.0 Programmer's Reference</title>
<author>Michael Kay</author>
<isbn>0764569090</isbn>
</book>
...
The price is too small
19. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
<ns>
Defines a namespace prefix and URI
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
<ns uri="http://book.example.com" prefix="b"/>
<pattern>
<rule context="b:book">
<assert test="@price > 10">The book price is too small</assert>
<report test="@price > 1000">The book price is too big</report>
</rule>
</pattern>
</schema>
20. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron Uses XPath
● XPath it is very important in Schematron:
● Rule context is expressed using an XPath expression
<rule context="book">
● Assertions are expressed using XPath expressions that are
evaluated as true or false
<assert test="@price > 10">
● @queryBinding – determines the XPath version
<schema queryBinding="xslt2">
● Possible values: xslt, xslt2, xslt3
21. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
What is XPath?
● A language for addressing parts of an XML document
(XML Path Language)
● A W3C Recommendation in 1999
www.w3.org/TR/xpath
● XPath versions 1.0, 2.0, 3.0, 3.1 (2017)
● Tutorials:
● www.data2type.de/en/xml-xslt-xslfo/xpath/
● www.xfront.com/xpath/
● www.zvon.org/comp/m/xpath.html
24. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Check Number of List Items
● Example of a rule that checks the number of list items
in a list
A list must have more than one item
25. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Check Number of List Items
● The number of list items from an unordered list should
be greater than one
<sch:rule context="ul">
<sch:assert test="count(li) > 1">
A list must have more than one item</sch:assert>
</sch:rule>
27. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Styling in Titles
● The b element should not be used in a title
<sch:rule context="title">
<sch:report test="b">
Bold is not allowed in <sch:name/> element</sch:report>
</sch:rule>
28. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Semicolon at End of List Items
● Example of rule that checks if a semicolon is at the
end of a list item
Semicolon is not allowed at the end of a list item
29. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Semicolon at End of List Items
● The last text from a list item should not end with
semicolon
<sch:rule context="li">
<sch:report test="ends-with(text()[last()], ';')">
Semicolon is not allowed after list item</sch:report>
</sch:rule>
30. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Check External Link Protocol
● Example of rule that check the external link protocol
The external link should start with http(s)
31. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Check External Link Protocol
● The @href attribute value it is an external link and
should start with http or https.
<rule context="xref">
<sch:assert test="matches(@href, '^http(s?)://')">
An link should start with http(s).</sch:assert>
</rule>
33. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Missing Tables Cells
● Check that are the same number of cells on each row
<sch:rule context="table">
<sch:let name="minColumsNo" value="min(//row/count(entry))"/>
<sch:let name="reqColumsNo" value="max(//row/count(entry))"/>
<sch:assert test="$minColumsNo >= $reqColumsNo">
Cells are missing. (The number of cells for each row must be
<sch:value-of select="$reqColumsNo"/>)
</sch:assert>
</sch:rule>
35. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Link in Text Content
● Check if a link is added in text content but is not
tagged as a link
<sch:rule context="text()">
<sch:report test="matches(., '(http|www)S+')
and local-name(parent::node()) != 'xref'">
The link should be a xref element</sch:report>
</sch:rule>
36. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Conclusion
● Simple to complex Schematron rules
● Additional Schematron elements used:
● <let> - A declaration of a named variable
● <value-of> - Finds or calculates values from the instance
document
● <name> - Provides the names of nodes from the instance
document
38. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Validate XML with Schematron
● Associate Schematron in the XML file
● Use tool-specific association options
● Associate Schematron file with a set of XML files (all files with a
specific namespace, or from a directory)
● Associate Schematron with all XML files from a project
<?xml-model href="books.sch" type="application/xml"
schematypens="http://purl.oclc.org/dsdl/schematron"?>
39. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Embed Schematron in XSD or
RNG
● Schematron can be added in the XSD appinfo element
● Add Schematron checks in any element on any level of
an RNG schema
40. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Run Schematron Validation
● From an XML editing framework
● Check the XML files as you type
● Run the Schematron validation on multiple files
● Using W3C's XProc pipeline language through its
"validate-with-schematron" step
● Using Apache Ant, from bat/shell
https://github.com/Schematron/ant-schematron
41. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron Validation Result
● Messages presented in the editing framework
● As an XML file describing the validation errors, normally
in Schematron Validation Reporting Language (SVRL)
<svrl:failed-assert test="matches(@href, '^http(s?)://')" role="warn"
location="/topic[1]/body[1]/section[1]/p[3]/xref[1]">
<svrl:text>An external link should start with http(s).</svrl:text>
</svrl:failed-assert>
42. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron Messages Severity
● Severity level can be set in the value of the @role attribute
from an assert or report element (fatal, error, warn, or info)
● Depending on the severity, the message can be rendered
differently in an editing framework
43. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Multilingual Support in
Schematron
● Based on the Schematron diagnostic element
● A diagnostic element is used for each language
● Multilingual support defined in the Schematron
specification
<sch:assert test="bone" diagnostics="d_en d_de">
A dog should have a bone.
</sch:assert>
….
<sch:diagnostics xml:lang="en">
<sch:diagnostic id="d_en">A dog should have a bone.<sch:diagnostic>
</sch:diagnostics>
<sch:diagnostics xml:lang="de">
<sch:diagnostic id="d_de">Das Hund muss ein Bein haben.</sch:diagnostic>
</sch:diagnostics>
44. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Conclusion
● Multiple ways to associate and apply the validation
● Validation results as you type or in a report
● Messages with different severity
● Multilingual support
46. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron for Non-Technical
Users
● Schematron is used in multiple domains
● There are more and more non-technical users that
want to develop their own rules
● Providing a user interface to create the Schematron
rules will be more appropriate for them
47. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Library of Rules
● A solution can be to provide a library of rules
● The user can choose the rule that he wants to add
Avoid a word in a certain element
Limit the number of words
Avoid duplicate content
48. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Abstract Patterns
● Library of rules implemented using abstract patterns
AvoidWordInElement
LimitNoOfWords
AvoidDuplicateContent
select
Schemtron rules
generate
49. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Abstract Pattern
● Allows to reuse patterns by making them generic
<pattern id="LimitNoOfWords" abstract="true">
<rule context="$parentElement">
<let name="words" value="count(tokenize(normalize-space(.), ' '))"/>
<assert test="$words le $maxWords">
$message You have <value-of select="$words"/> word(s).
</assert>
<assert test="$words ge $minWords">
$message You have <value-of select="$words"/> word(s).
</assert>
</rule>
</pattern>
50. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Pattern Instantiation
● Refer an abstract pattern and specifies values for
parameters
<pattern is-a="LimitNoOfWords">
<param name="parentElement" value="shortdesc"/>
<param name="minWords" value="1"/>
<param name="maxWords" value="50"/>
<param name="message" value="Keep short descriptions between 1 and 50 words!"/>
</pattern>
<pattern is-a="LimitNoOfWords">
<param name="parentElement" value="title"/>
<param name="minWords" value="1"/>
<param name="maxWords" value="8"/>
<param name="message" value="Keep titles between 1 and 8 words."/>
</pattern>
52. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Dynamic Information Model (DIM)
● An implementation of an intelligent style guide
● Describes and enforces rules
● Open-source project available on GitHub
https://github.com/oxygenxml/dim
53. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron for Technical
Users
Environment to develop Schematron schemas
● Editor
● Validation
● Search and refactoring
● Working with modules
● Unit testing
54. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Editor
● Syntax highlighting - to improve the readability of the
content
● Content completion assistant - offering proposals that
are valid at the cursor position
● Documentation - with information about the particular
proposal
55. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Validate
● Validate Schematron schemas, and highlight problems
directly in the editor
● Validate Schematron modules in context
● Support for validation as you type
56. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Search and Refactoring
● Find references to variables, pattern, phases, or
diagnostics
● Support for renaming all references from the current
document, or in the entire hierarchy
● Preview the changes
57. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Working with Modules
● Visualize the hierarchy of modules
● Support for editing a Schematron module in the context
● Moving and renaming modules
58. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Test Schematron Rules
● Developing Schematron schema also involves testing
● Make sure Schematron rules work as expected
● Apply multiple XML examples over the Schematron
rules and check the results
59. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
XSpec
●
Solution to create Schematron unit tests
●
Unit test and BDD (Behaviour Driven Development )
framework
– https://github.com/xspec/xspec/
●
Oxygen XSpec Helper View plugin
– github.com/xspec/oXygen-XML-editor-xspec-support
●
Tutorials
●
github.com/xspec/xspec/wiki/Getting-Started-with-XSpec-and-Schematron
●
oxygenxml.com/events/2018/webinar_xspec_unit_testing_for_xslt_and_schematron.html
60. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Conclusion
● Library of rules using abstract patterns
● User interface for non-technical users
● Editing, validation, and refactoring support for
technical users
● Test cases for Schematron
62. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron Fix Proposals
● Schematron assertion messages are not always
enough for the user to find a solution
● It is better to have some proposals to correct the
Schematron reported problem
● Similar to spell check proposals
63. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron Quick Fix
Proposals
● User-defined fixes for Schematron errors
● Schematron Quick Fix (SQF) language
● Extension of the Schematron language
● SQF initiated by Nico Kutscherauer
www.schematron-quickfix.com
github.com/schematron-quickfix/sqf
65. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
SQF Extension of Schematron
● Added as Schematron annotations
● Associate fixes with assert and report elements
<rule context="title">
<report test="b" sqf:fix="resolveBold">
Bold is not allowed in title element</report>
<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="node()"/>
</sqf:fix>
</rule>
66. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Schematron Quick Fix (SQF)
<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="node()"/>
</sqf:fix>
Operation
ID
Description
Title
67. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
SQF Operations
The following 4 types of operations are supported:
– <sqf:add> - To add a new node or fragment in the document
– <sqf:delete> - To remove a node from the document
– <sqf:replace> - To replace a node with another node or fragment
– <sqf:stringReplace> - To replace text content with other text or a
fragment
69. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
1. SQF “add” Operation
● Example of using the “add” operation: add new list
item in a list
List contains only one item
Add new list item
70. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
1. SQF “add” Operation
● <sqf:add> element allows you to add one or more
nodes to the XML instance
<rule context="ul">
<assert test="count(li) > 1" sqf:fix="addListItem">A list must have more
than one item.</assert>
<sqf:fix id="addListItem">
<sqf:description>
<sqf:title>Add new list item</sqf:title>
</sqf:description>
<sqf:add node-type="element" target="li" position="last-child"/>
</sqf:fix>
</rule>
71. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
2. SQF “delete” Operation
● Example of using the “delete” operation: remove
redundant link text
Remove redundant link text
Text in the link and the value of the @href are the same
72. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
2. SQF “delete” Operation
● <sqf:delete> element specifies the nodes for the
deletion
<rule context="xref">
<report test="@href = text()" sqf:fix="removeText">
Link text is same as @href attribute value. Please remove.</report>
<sqf:fix id="removeText">
<sqf:description>
<sqf:title>Remove redundant link text</sqf:title>
</sqf:description>
<sqf:delete match="text()"/>
</sqf:fix>
</rule>
73. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
3. SQF “replace” Operation
● Example of using the “replace” operation: replace bold
element with text
Change the bold into text
Styling is not allowed in titles
74. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
3. SQF “replace” Operation
● <sqf:replace> element specifies the nodes to be
replaced and the replacing content
<rule context="title">
<report test="b" sqf:fix="resolveBold">
Bold is not allowed in title element.</report>
<sqf:fix id="resolveBold">
<sqf:description>
<sqf:title>Change the bold into text</sqf:title>
</sqf:description>
<sqf:replace match="b" select="node()"/>
</sqf:fix>
</rule>
75. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
4. SQF “stringReplace” Operation
● Example of using the “stringReplace” operation:
replace semicolon with full stop
Replace semicolon with full stop
Semicolon is not allowed at the end of a list item
76. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
4. SQF “stringReplace” Operation
● <sqf:stringReplace> element defines the nodes that
will replace the substrings
<rule context="li">
<report test="ends-with(text()[last()], ';')" sqf:fix="replaceSemicolon">
Semicolon is not allowed after list item</report>
<sqf:fix id="replaceSemicolon">
<sqf:description>
<sqf:title>Replace semicolon with full stop</sqf:title>
</sqf:description>
<sqf:stringReplace match="text()[last()]" regex=";$" select="'.'"/>
</sqf:fix>
</rule>
77. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Conclusions
● Schematron Quick Fix language is simple
● You can define custom fixes for your project
● Just 4 types of operations
78. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
SQF Implementations
● <oXygen/> XML Editor validation engine
http://www.oxygenxml.com
● Escali Schematron engine
http://schematron-quickfix.com/escali_xsm.html
● Escali Schematron command-line tool
● Oxygen plugin for invoking Escali Schematron
79. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Projects Using SQF
● Thieme - publishing company uses a custom framework
to create and edit XML documents
● parsX - a product developed by pagina GmbH used to
facilitate EPUB production
● ART-DECOR - an open-source tool suite that supports
SDOs active in the healthcare industry
Sample SQF embedded in XSD
● ATX custom framework – used by a major automotive
manufacturer
80. Schematron step-by-stepSchematron step-by-step
Copyright @ Syncro Soft, 2018. All rights reserved.
Resources
● Schematron official site
● Schematron specification
● Schematron Quick Fix specification
● Sample files:
github.com/octavianN/Schematron-step-by-step
82. Your opinion is important to us! Please tell us what you thought of the lecture. We
look forward to your feedback under
http://ta14.honestly.de
or scan the QR code
The feedback tool will be available even after the conference!
Editor's Notes
Hello everybody!
My name is Octavian. I am a member of the oXygen, for over 10 years.
Verify data inter-dependencies: such as if a start date from an attribute value is set before the end date attribute value
Use Schematron to verify data interdependencies (co constraints), check data cardinality, and perform algorithmic checks.
A co-constraint is a dependency between data within an XML document or across XML documents.
Cardinality refers to the presence or absence of data.
An algorithmic check determines data validity by performing an algorithm on the data.
Schematron can perform any function supported by an XPath statement or XSLT test condition
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
With Schematron you not only define your own messages, you can specify also the severity level of the message: info, warnning, error, fatal.
In current development version we added multilingiual support for Schematron messages.
We implemented this support base on the Schematron specification, using the diagnostic elements.
For each language a diagnostic element is created and referred from the assertion.
To specify the message language each diagnostic element has an xml:lang attribute.
In current development version we added multilingiual support for Schematron messages.
We implemented this support base on the Schematron specification, using the diagnostic elements.
For each language a diagnostic element is created and referred from the assertion.
To specify the message language each diagnostic element has an xml:lang attribute.
The template name xsl:initial-template is specially recognized in that it provides a default entry point for stylesheet execution
If the styleseet has an xsl:initial-tempalate specified, when you create a transformation scenario you don&apos;t need to specify an XML document
You can also specify the initial templ;ate name in the advanced options of the transformation scenario
The template name xsl:initial-template is specially recognized in that it provides a default entry point for stylesheet execution
If the styleseet has an xsl:initial-tempalate specified, when you create a transformation scenario you don&apos;t need to specify an XML document
You can also specify the initial templ;ate name in the advanced options of the transformation scenario
In current development version we added multilingiual support for Schematron messages.
We implemented this support base on the Schematron specification, using the diagnostic elements.
For each language a diagnostic element is created and referred from the assertion.
To specify the message language each diagnostic element has an xml:lang attribute.
In current development version we added multilingiual support for Schematron messages.
We implemented this support base on the Schematron specification, using the diagnostic elements.
For each language a diagnostic element is created and referred from the assertion.
To specify the message language each diagnostic element has an xml:lang attribute.
The template name xsl:initial-template is specially recognized in that it provides a default entry point for stylesheet execution
If the styleseet has an xsl:initial-tempalate specified, when you create a transformation scenario you don&apos;t need to specify an XML document
You can also specify the initial templ;ate name in the advanced options of the transformation scenario
In current development version we added multilingiual support for Schematron messages.
We implemented this support base on the Schematron specification, using the diagnostic elements.
For each language a diagnostic element is created and referred from the assertion.
To specify the message language each diagnostic element has an xml:lang attribute.
SQF Extension of Schematron
A quick fix structure is in fact very simple.
- It has an ID used to refer the quick fix
- A title
- A description of the quick fix
- And the operations that will be performed.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
So, we have similar implementation to the on that Nico presented, but we generate from the SQF quick fixes the oXygen quick fixes, that we know to execute in the application.
Thank you for watching. If you have any questions, that you didn&apos;t ask yet, you can ask now.
Also you can send the questions to my email address or on twitter.