The document discusses the XCRI-CAP 1.2 Validator, which aims to validate XML course data feeds against the XCRI-CAP 1.2 standard to ensure quality and consistency. It validates at the XML structural level using XML schemas, and also performs rule-based validation against the XCRI data definitions and vocabulary. The validator provides feedback on issues it finds, grouped by severity. It advises using the online validator first or downloading the open source code.
The document introduces Markdown, a lightweight markup language that can be written in plaintext and converted to HTML or rich format. It allows for headings, paragraphs, lists, code snippets, links and images. Markdown is useful for coders to write documentation, blog posts, readme files and in-code comments in an easy to read and write format. Doxygen notation can be used for in-code comments and Markdown files can be automatically generated into documentation with Doxygen. The document provides examples of using Markdown and Doxygen.
ASIT provides best "VB.NET" Course ,to invites lot of people with technical back ground and experienced HR from corporate world as a part of pre-placement training, this actually helps us to perform better in our interviews. For more details please visit our website.
Use notes objects in memory and other useful java tips for xpages developmentFrank van der Linden
This document discusses various Java tips and techniques for XPages development, including:
1) Putting Notes documents in memory by wrapping them in a DominoDocument class to avoid memory issues.
2) Using built-in JSON classes to build JSON instead of string concatenation.
3) Creating managed beans to minimize server-side JavaScript and make code more readable.
4) Developing utility classes and extending classes for reusable code.
This document summarizes a presentation about connecting to activity streams using Yellow and Blue systems. It discusses OAuth and OpenSocial standards for authorization and social components. The Yellow and Blue system presented pulls information from various sources using XPages, OAuth, and Java and displays it in a unified activity stream. It demonstrates connecting an app to the activity stream on Greenhouse using OAuth and the Social Enabler from OpenNTF to retrieve and display the stream.
This document covers key concepts in functional JavaScript including:
1) First class functions, loops, purity, type signatures, partial application, and composition.
2) It discusses the differences between imperative vs declarative programming and defines pure functions.
3) Various exercises are presented to reinforce these functional programming concepts.
This document provides an agenda and overview for an intro to Java programming class. It includes sections on class introductions, a brief history of Java, installations, and an overview of the Java language and object-oriented concepts. The class will cover installing Java, the Eclipse IDE, and reviewing key OO concepts like abstraction, encapsulation, inheritance and polymorphism.
This presentation deals with the general description of Domain Specific Languages and the features and building blocks of Eclipse Xtext as a framework for building DSLs. Moreover, it contains a summary of the new features in the latest version of Xtext.
This presentation by Tomasz Kleszczyński (Software Engineer) was delivered at GlobalLogic Java Conference #2 in Krakow on April 23, 2016.
The document introduces Markdown, a lightweight markup language that can be written in plaintext and converted to HTML or rich format. It allows for headings, paragraphs, lists, code snippets, links and images. Markdown is useful for coders to write documentation, blog posts, readme files and in-code comments in an easy to read and write format. Doxygen notation can be used for in-code comments and Markdown files can be automatically generated into documentation with Doxygen. The document provides examples of using Markdown and Doxygen.
ASIT provides best "VB.NET" Course ,to invites lot of people with technical back ground and experienced HR from corporate world as a part of pre-placement training, this actually helps us to perform better in our interviews. For more details please visit our website.
Use notes objects in memory and other useful java tips for xpages developmentFrank van der Linden
This document discusses various Java tips and techniques for XPages development, including:
1) Putting Notes documents in memory by wrapping them in a DominoDocument class to avoid memory issues.
2) Using built-in JSON classes to build JSON instead of string concatenation.
3) Creating managed beans to minimize server-side JavaScript and make code more readable.
4) Developing utility classes and extending classes for reusable code.
This document summarizes a presentation about connecting to activity streams using Yellow and Blue systems. It discusses OAuth and OpenSocial standards for authorization and social components. The Yellow and Blue system presented pulls information from various sources using XPages, OAuth, and Java and displays it in a unified activity stream. It demonstrates connecting an app to the activity stream on Greenhouse using OAuth and the Social Enabler from OpenNTF to retrieve and display the stream.
This document covers key concepts in functional JavaScript including:
1) First class functions, loops, purity, type signatures, partial application, and composition.
2) It discusses the differences between imperative vs declarative programming and defines pure functions.
3) Various exercises are presented to reinforce these functional programming concepts.
This document provides an agenda and overview for an intro to Java programming class. It includes sections on class introductions, a brief history of Java, installations, and an overview of the Java language and object-oriented concepts. The class will cover installing Java, the Eclipse IDE, and reviewing key OO concepts like abstraction, encapsulation, inheritance and polymorphism.
This presentation deals with the general description of Domain Specific Languages and the features and building blocks of Eclipse Xtext as a framework for building DSLs. Moreover, it contains a summary of the new features in the latest version of Xtext.
This presentation by Tomasz Kleszczyński (Software Engineer) was delivered at GlobalLogic Java Conference #2 in Krakow on April 23, 2016.
This document summarizes data on overcrowding and delays in the justice system in jails in Bastar Division, Chhattisgarh. Some key points:
- Jails in Bastar have severe overcrowding, with occupancy rates over 250% capacity. This is due to excessive numbers of prisoners rather than lack of capacity.
- In Dantewada, overcrowding results from long durations of incarceration of undertrials, not increased arrests. Many are arrested in group crimes but eventually acquitted.
- Fabricated evidence, shoddy chargesheets, deliberate delays by witnesses, and multiple trials are used to ensure long pre-trial detention, sometimes lasting years, despite later acquitt
This document summarizes the design of a horizontal axis wind turbine with the following key points:
1) The turbine is designed to produce 80 kW of power at a wind speed of 12 m/s. It uses a three blade rotor with a diameter of 14.27 meters.
2) Airfoil profiles were selected for the root, mid, and tip sections of the blades. Velocity triangles and chord lengths were calculated along the blade.
3) At the design wind speed, the turbine produces 81.8 kW of power, corresponding to a power coefficient of 0.5634. Off-design performance at lower wind speeds was also analyzed.
This document summarizes the activities of the eCommerce Center at the University of Maribor in Slovenia. It discusses several laboratories within the center focused on areas like eProcurement, mobile commerce, groupware, and eMarkets. It also outlines partnerships with other universities and businesses. The center aims to conduct research and develop prototypes in various areas of eCommerce through these laboratories and collaborations.
This document provides an introduction and agenda for the GI2013 forum on interoperability of spatial data, services, and applications. The forum will focus on sustainability and security applications for risk prevention and disaster protection. It will provide an opportunity for inter-regional experience sharing, particularly at cross-border levels. The document outlines the history of initiatives aiming to improve cross-border data sharing, from the 1994 Clinton order establishing open geospatial standards to the current challenges of semantic interoperability across borders as required by the INSPIRE directive. It presents the agenda and table of contents for the GI2013 forum.
1. O documento descreve uma análise do perfil bioquímico-hematológico em populações de tuco-tucos (Ctenomys lami) com e sem impacto antrópico no Rio Grande do Sul, Brasil.
2. Foi analisado o perfil hematológico e valores bioquímicos sanguíneos de tuco-tucos de três regiões distintas: regiões A e B impactadas pela bovinocultura e região C sem impacto.
3. Diferenças significativas foram encontradas em alguns par
This document outlines an agenda for a hands-on session on integrating Sonar with Jenkins on Amazon EC2. It includes steps for launching an EC2 instance, downloading keys, and accessing the instance via SSH. It then provides overviews of Jenkins for continuous integration and Sonar for code quality analysis. The document describes plugins for each and how Sonar can analyze code for violations, bugs, test coverage and more. It concludes with references for further information.
Want to learn how to use Selenium from the ground up? This presentation will show you how to start from nothing and build out a well factored, maintainable, resilient, and parallelized set of tests that will run locally, on a Continuous Integration server, and in the cloud. These tests will not only work well, but exercise relevant functionality that matters to the business.
Sauce Labs hosted a Selenium bootcamp webinar with guest speaker Dave Haeffner. This presentation will give you a basis for the detail given in Dave's like titled E-book and get you started with Selenium.
Eclipse Hawk provides scalable querying of models by indexing them into graph databases. It addresses challenges of collaborative modeling on large systems by distributed teams. The Hawk API is designed for flexibility, performance, and scalability through features like multiple communication styles, efficient encodings, and paged results.
This document provides an introduction to using the Chrome Inspector for JavaScript development. It outlines goals of understanding JavaScript foundations, using jQuery and AJAX calls, making promises, and making friends. It then demonstrates various panels of the Chrome Inspector including Elements, Network, Sources, and Console for selecting DOM elements, inspecting HTTP calls, adding breakpoints for debugging, and running JavaScript code. Users are encouraged to ask questions.
Introduction in the JavaScript Programming language typically used in the front end of Web Applications. More information can be found at : https://www.spiraltrain.nl/course-javascript-programming/?lang=en
Acceptance Test-driven Development (ATDD) involves collaboratively discussing acceptance criteria and examples before development begins. These criteria and examples are then distilled into concrete acceptance tests. The team then develops software features while hooking them up to the acceptance tests. Finally, the features and successful acceptance tests are demoed. Cucumber is a tool that allows executing acceptance tests written in a behavior-driven style using a Given-When-Then format. Cucumber tests can automate interactions with a web application using tools like Selenium WebDriver.
The document discusses two common XML parsers - DOM and SAX. DOM builds an in-memory tree representation of the entire XML document, allowing random access. SAX is event-based and parses the document sequentially, notifying the application of elements and attributes through callback methods. DOM is used when random access or rearranging elements is needed, while SAX is better for large documents or streaming data. Common DOM and SAX methods are also outlined.
This document provides a summary of the Solr search platform. It begins with introductions from the presenter and about Lucid Imagination. It then discusses what Solr is, how it works, who uses it, and its main features. The rest of the document dives deeper into topics like how Solr is configured, how to index and search data, and how to debug and customize Solr implementations. It promotes downloading and experimenting with Solr to learn more.
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Lucidworks
This document discusses challenges in providing search capabilities for the Apache Solr Reference Guide content. It explores indexing the reference guide content stored in HTML format using the bin/post tool and Apache Solr's ExtractingRequestHandler. It also considers using Lucidworks' Site Search hosted service as an alternative. While both options face challenges due to the source content structure, Site Search provides a quicker path to basic search functionality for the reference guide.
This document summarizes the key updates and new features in VA Smalltalk V8.0.2, including updates to Seaside 3.0, the initial release of GLORP, platform and database enhancements, SUnit 4.0, and documentation updates. It also discusses future priorities, candidates for upcoming releases, and how to obtain VA Smalltalk.
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016Metosin Oy
The document discusses Schema and Clojure.spec, two libraries for data validation and specification in Clojure. It provides an overview of Schema's capabilities for runtime validation, documentation, and data transformations. It also summarizes Clojure.spec's focus on specification through generative testing. The document compares the two approaches and argues that Schema is currently better for runtime validation in web applications, while Clojure.spec will be important for system-level specification.
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cppClare Macrae
Presented at MUC++, 6 August 2020
Links from this talk are at: https://github.com/claremacrae/talks/blob/main/Quickly_and_Effectively_Testing_Legacy_C++_Code_with_Approval_Tests.md#top
Abstract:
You've inherited some legacy code: it's valuable, but it doesn't have tests, and it wasn't designed to be testable, so you need to start refactoring. But you can't refactor safely until the code has tests, and you can't add tests without refactoring! How can you ever break out of this loop?
Whether Legacy code for you means "old code", "code without tests", or "code you wish to redesign for new features or unit-tests", this talk will enable you to become productive and work safely, quickly.
The simplicity, convenience, ease-of-use, power and flexibility of Llewellyn Falco's "Approval Tests" approach has long been proven in a dozen programming languages. And now all this is now available to C++ developers too!
Clare will present a small but surprisingly effective C++11 library for applying "Approval Tests" to cross-platform C++ code - for both legacy and green-field systems, and with a range of testing frameworks.
She will demonstrate its use in some real-world situations, including how to quickly lock down the behaviour of legacy code. She will show how to quickly achieve good test coverage, even for very large sets of inputs.
Attendees will discover some quick, practical techniques to use for common challenges that can be applied very easily using Approval Tests.
Way2Automation provides class-room training,Online training and Video Tutorial. We have trained over 4000+ students for Advance Selenium training. We have industry experts who are master in their domains and help you gain the same experience in the training programme. For quality purpose we keep 2 session completely free. http://www.way2automation.com/
This document summarizes data on overcrowding and delays in the justice system in jails in Bastar Division, Chhattisgarh. Some key points:
- Jails in Bastar have severe overcrowding, with occupancy rates over 250% capacity. This is due to excessive numbers of prisoners rather than lack of capacity.
- In Dantewada, overcrowding results from long durations of incarceration of undertrials, not increased arrests. Many are arrested in group crimes but eventually acquitted.
- Fabricated evidence, shoddy chargesheets, deliberate delays by witnesses, and multiple trials are used to ensure long pre-trial detention, sometimes lasting years, despite later acquitt
This document summarizes the design of a horizontal axis wind turbine with the following key points:
1) The turbine is designed to produce 80 kW of power at a wind speed of 12 m/s. It uses a three blade rotor with a diameter of 14.27 meters.
2) Airfoil profiles were selected for the root, mid, and tip sections of the blades. Velocity triangles and chord lengths were calculated along the blade.
3) At the design wind speed, the turbine produces 81.8 kW of power, corresponding to a power coefficient of 0.5634. Off-design performance at lower wind speeds was also analyzed.
This document summarizes the activities of the eCommerce Center at the University of Maribor in Slovenia. It discusses several laboratories within the center focused on areas like eProcurement, mobile commerce, groupware, and eMarkets. It also outlines partnerships with other universities and businesses. The center aims to conduct research and develop prototypes in various areas of eCommerce through these laboratories and collaborations.
This document provides an introduction and agenda for the GI2013 forum on interoperability of spatial data, services, and applications. The forum will focus on sustainability and security applications for risk prevention and disaster protection. It will provide an opportunity for inter-regional experience sharing, particularly at cross-border levels. The document outlines the history of initiatives aiming to improve cross-border data sharing, from the 1994 Clinton order establishing open geospatial standards to the current challenges of semantic interoperability across borders as required by the INSPIRE directive. It presents the agenda and table of contents for the GI2013 forum.
1. O documento descreve uma análise do perfil bioquímico-hematológico em populações de tuco-tucos (Ctenomys lami) com e sem impacto antrópico no Rio Grande do Sul, Brasil.
2. Foi analisado o perfil hematológico e valores bioquímicos sanguíneos de tuco-tucos de três regiões distintas: regiões A e B impactadas pela bovinocultura e região C sem impacto.
3. Diferenças significativas foram encontradas em alguns par
This document outlines an agenda for a hands-on session on integrating Sonar with Jenkins on Amazon EC2. It includes steps for launching an EC2 instance, downloading keys, and accessing the instance via SSH. It then provides overviews of Jenkins for continuous integration and Sonar for code quality analysis. The document describes plugins for each and how Sonar can analyze code for violations, bugs, test coverage and more. It concludes with references for further information.
Want to learn how to use Selenium from the ground up? This presentation will show you how to start from nothing and build out a well factored, maintainable, resilient, and parallelized set of tests that will run locally, on a Continuous Integration server, and in the cloud. These tests will not only work well, but exercise relevant functionality that matters to the business.
Sauce Labs hosted a Selenium bootcamp webinar with guest speaker Dave Haeffner. This presentation will give you a basis for the detail given in Dave's like titled E-book and get you started with Selenium.
Eclipse Hawk provides scalable querying of models by indexing them into graph databases. It addresses challenges of collaborative modeling on large systems by distributed teams. The Hawk API is designed for flexibility, performance, and scalability through features like multiple communication styles, efficient encodings, and paged results.
This document provides an introduction to using the Chrome Inspector for JavaScript development. It outlines goals of understanding JavaScript foundations, using jQuery and AJAX calls, making promises, and making friends. It then demonstrates various panels of the Chrome Inspector including Elements, Network, Sources, and Console for selecting DOM elements, inspecting HTTP calls, adding breakpoints for debugging, and running JavaScript code. Users are encouraged to ask questions.
Introduction in the JavaScript Programming language typically used in the front end of Web Applications. More information can be found at : https://www.spiraltrain.nl/course-javascript-programming/?lang=en
Acceptance Test-driven Development (ATDD) involves collaboratively discussing acceptance criteria and examples before development begins. These criteria and examples are then distilled into concrete acceptance tests. The team then develops software features while hooking them up to the acceptance tests. Finally, the features and successful acceptance tests are demoed. Cucumber is a tool that allows executing acceptance tests written in a behavior-driven style using a Given-When-Then format. Cucumber tests can automate interactions with a web application using tools like Selenium WebDriver.
The document discusses two common XML parsers - DOM and SAX. DOM builds an in-memory tree representation of the entire XML document, allowing random access. SAX is event-based and parses the document sequentially, notifying the application of elements and attributes through callback methods. DOM is used when random access or rearranging elements is needed, while SAX is better for large documents or streaming data. Common DOM and SAX methods are also outlined.
This document provides a summary of the Solr search platform. It begins with introductions from the presenter and about Lucid Imagination. It then discusses what Solr is, how it works, who uses it, and its main features. The rest of the document dives deeper into topics like how Solr is configured, how to index and search data, and how to debug and customize Solr implementations. It promotes downloading and experimenting with Solr to learn more.
Challenges of Simple Documents: When Basic isn't so Basic - Cassandra Targett...Lucidworks
This document discusses challenges in providing search capabilities for the Apache Solr Reference Guide content. It explores indexing the reference guide content stored in HTML format using the bin/post tool and Apache Solr's ExtractingRequestHandler. It also considers using Lucidworks' Site Search hosted service as an alternative. While both options face challenges due to the source content structure, Site Search provides a quicker path to basic search functionality for the reference guide.
This document summarizes the key updates and new features in VA Smalltalk V8.0.2, including updates to Seaside 3.0, the initial release of GLORP, platform and database enhancements, SUnit 4.0, and documentation updates. It also discusses future priorities, candidates for upcoming releases, and how to obtain VA Smalltalk.
Schema tools-and-trics-and-quick-intro-to-clojure-spec-22.6.2016Metosin Oy
The document discusses Schema and Clojure.spec, two libraries for data validation and specification in Clojure. It provides an overview of Schema's capabilities for runtime validation, documentation, and data transformations. It also summarizes Clojure.spec's focus on specification through generative testing. The document compares the two approaches and argues that Schema is currently better for runtime validation in web applications, while Clojure.spec will be important for system-level specification.
Quickly and Effectively Testing Legacy c++ Code with Approval Tests mu cppClare Macrae
Presented at MUC++, 6 August 2020
Links from this talk are at: https://github.com/claremacrae/talks/blob/main/Quickly_and_Effectively_Testing_Legacy_C++_Code_with_Approval_Tests.md#top
Abstract:
You've inherited some legacy code: it's valuable, but it doesn't have tests, and it wasn't designed to be testable, so you need to start refactoring. But you can't refactor safely until the code has tests, and you can't add tests without refactoring! How can you ever break out of this loop?
Whether Legacy code for you means "old code", "code without tests", or "code you wish to redesign for new features or unit-tests", this talk will enable you to become productive and work safely, quickly.
The simplicity, convenience, ease-of-use, power and flexibility of Llewellyn Falco's "Approval Tests" approach has long been proven in a dozen programming languages. And now all this is now available to C++ developers too!
Clare will present a small but surprisingly effective C++11 library for applying "Approval Tests" to cross-platform C++ code - for both legacy and green-field systems, and with a range of testing frameworks.
She will demonstrate its use in some real-world situations, including how to quickly lock down the behaviour of legacy code. She will show how to quickly achieve good test coverage, even for very large sets of inputs.
Attendees will discover some quick, practical techniques to use for common challenges that can be applied very easily using Approval Tests.
Way2Automation provides class-room training,Online training and Video Tutorial. We have trained over 4000+ students for Advance Selenium training. We have industry experts who are master in their domains and help you gain the same experience in the training programme. For quality purpose we keep 2 session completely free. http://www.way2automation.com/
This document provides an introduction to validating XML documents. It discusses:
- What validation is and how it differs from a document simply being well-formed
- How validation is performed using Document Type Definitions (DTDs) or XML Schema
- An overview of the components and process of validation using a Java example
- How to create an error handler class to handle any errors encountered during validation
The document provides background on XML validation and walks through high-level examples of validating an XML document using a DTD or XML Schema, as well as creating an error handler class to handle validation errors in Java.
This document provides an overview of advanced C# concepts, including:
- C# can be used to create various types of applications like console apps, Windows forms, web services, and ASP.NET MVC apps.
- Assemblies are deployment units that contain code and metadata. They can be EXEs or DLLs.
- Types in C# can contain fields, methods, properties, and events. Methods are not virtual by default. Access modifiers include private, protected, internal, and public.
- Objects are allocated in memory and cleaned up through constructors, finalizers, and the garbage collector. Exceptions provide a way to handle errors.
SE2016 - Java EE revisits design patterns 2016Alex Theedom
Design patterns are not only cool but represent the collective wisdom of many developers. Since the publication of Design Patterns: Elements of Reusable Object-Oriented Software by GoF many new concepts have extended the coverage of these design patterns, and now Java EE provides out-of-the box implementations of many of the most well known patterns. This talk will show how, by taking advantage of Java EE features such as CDI and the smart use of annotations, traditional design patterns can be implemented in a much cleaner and quicker way. Among the design patterns discuss there will be Singleton, Façade, Observer, Factory, Dependency Injection, Decorator and more.
This document discusses end-to-end web standards and server-side JavaScript. It summarizes the World Wide Web Consortium (W3C) and its role in developing web standards. It also discusses how many W3C APIs can be used on both the client-side and server-side through JavaScript implementations like Node.js, RingoJS, and Wakanda. CommonJS standards allow modules and packages to be shared between client-side and server-side JavaScript.
The document discusses Apache Camel, an open-source integration library that can be used to integrate disparate systems that use different protocols and data formats. It provides an overview of what integration is, describes how Camel works using a domain-specific language and components, and demonstrates how to define simple routes using Java or XML. The presentation concludes with information on management and tooling support for Camel.
A Visual Guide to 1 Samuel | A Tale of Two HeartsSteve Thomason
These slides walk through the story of 1 Samuel. Samuel is the last judge of Israel. The people reject God and want a king. Saul is anointed as the first king, but he is not a good king. David, the shepherd boy is anointed and Saul is envious of him. David shows honor while Saul continues to self destruct.
Beyond Degrees - Empowering the Workforce in the Context of Skills-First.pptxEduSkills OECD
Iván Bornacelly, Policy Analyst at the OECD Centre for Skills, OECD, presents at the webinar 'Tackling job market gaps with a skills-first approach' on 12 June 2024
Andreas Schleicher presents PISA 2022 Volume III - Creative Thinking - 18 Jun...EduSkills OECD
Andreas Schleicher, Director of Education and Skills at the OECD presents at the launch of PISA 2022 Volume III - Creative Minds, Creative Schools on 18 June 2024.
Level 3 NCEA - NZ: A Nation In the Making 1872 - 1900 SML.pptHenry Hollis
The History of NZ 1870-1900.
Making of a Nation.
From the NZ Wars to Liberals,
Richard Seddon, George Grey,
Social Laboratory, New Zealand,
Confiscations, Kotahitanga, Kingitanga, Parliament, Suffrage, Repudiation, Economic Change, Agriculture, Gold Mining, Timber, Flax, Sheep, Dairying,
How Barcodes Can Be Leveraged Within Odoo 17Celine George
In this presentation, we will explore how barcodes can be leveraged within Odoo 17 to streamline our manufacturing processes. We will cover the configuration steps, how to utilize barcodes in different manufacturing scenarios, and the overall benefits of implementing this technology.
This presentation was provided by Rebecca Benner, Ph.D., of the American Society of Anesthesiologists, for the second session of NISO's 2024 Training Series "DEIA in the Scholarly Landscape." Session Two: 'Expanding Pathways to Publishing Careers,' was held June 13, 2024.
Elevate Your Nonprofit's Online Presence_ A Guide to Effective SEO Strategies...TechSoup
Whether you're new to SEO or looking to refine your existing strategies, this webinar will provide you with actionable insights and practical tips to elevate your nonprofit's online presence.
2. Pre-reqs!
Hopefully everyone already knows about
these…!
• Wiki: http://www.xcri.org/wiki/
(then click 1.2 specification)
• KB: http://www.xcri.co.uk/
(specifically the Course Data Programme
area)
• Forum: http://www.xcri.org/forum/
3. What does it (validation) aim to do?
Feed quality and consistency!
It is important to note that you will need exposure to both the XCRI-CAP 1.2
standard (via the wiki) and the Data Definitions and Vocabulary documents
(via the website) to create a feed which validates!
4. How does it work?
XML structural issues:
• Nesting
XML Validation • Namespace declarations
• Character literals
• …
XML document structure:
• Correct element capitalisation
XML Schema Validation • Correct element namespaces
• Simple element content validation
• …
Everything else:
• URL/Email/Telephone/etc. validation
Rule-based Validation • Element lengths
• Data Definitions Document rules
• …
5. What feedback do I get?
• A summary of issues Exceptions
broken down by severity
• Issues grouped by severity
then issue Warnings
• “Helpful” text
• Drill-down into line and
character information (if Recommendations
available)
6. Hints and Tips
• Start with small XML snippets (e.g. a single
course) then work upwards to a full
catalog
• If you have problems then use the XCRI
forum: http://www.xcri.org/forum
• Some issues require manual checking
• Remember that validation is iterative
• Bear in mind that element order is
important (for validation, NOT the spec)
7. How do I use it?
By far the easiest way is to use the online
version at http://validator.xcri.co.uk. This
way you get any bug fixes or rule base
alterations immediately…
...however the project is open-source and
you can download it all from
http://code.google.com/p/xcricap-validator/
(.NET 4.0, written in C#).
Hi, my name’s Craig Hawker and I’m here to give you an overview of the XCRI-CAP 1.2 Validator. You’ll all be glad to know that this is going to be very brief. I’m purposefully not going to dig deep into specifics but I’m sure people will have questions – some might already – so I’m around all day. I’m also doing a “validator surgery” outside after this until lunch. If anyone’s signed up, that is!I’m a software developer and I’ve been involved with XCRI-CAP for a couple of years now. I initially got involved by creating a feed for a local college, then started getting involved in providing tooling around XCRI-CAP 1.1 for the community. This resulted in the .NET XCRI-CAP Generator Library and the online XCRI-CAP 1.1 validator. Since then I’ve also been involved with XCRI-CAP 1.2 and am the primary developer of the XCRI-CAP 1.2 Validator, which is what we’re going to have a brief look at today.We’re going to, very quickly, go over:Pre-reqsWhat the validator aims to do and whyHow the validator works – at a very high levelWhat feedback you get out of the validatorSome hints and tips for using the validatorWhere the validator is and how you can get at itAn example of an issue identified by the validator and the process involved in resolving the issueAnd then that’s it. If anyone has any questions then I’m here all day and/or you can contact me using the details at the end of the presentation.
Okay, before we get started it’s best that I highlight a few pre-requisites. Hopefully everyone already knows about these but I’ll include them just in case.The wiki is where the XCRI-CAP 1.2 specification lives. It contains information on the elements, their namespaces, and information about how and where they should be used. It also contains links across to the sample schema files which, whilst not being part of the specification, are something you should be aware of and probably reference.The knowledgebase contains a huge amount of supplementary information around XCRI but the main bit I would say to focus on is the Course Data Programme area. This area contains the data definition documents which further refine elements that are mandatory and expected as part of this process.Finally: if you have any questions then the forum’s a great resource. There’s also the mailing list but that’s closed-access and, unless someone happens to be signed up when you send that email, there’s a chance it’ll not help other institutions. If it’s a question that you think would benefit others, I would recommend trying to use the forum.
When the XCRI-CAP 1.2 standard was completed, JISC recognised that it was important to ensure that the quality and consistency of the feeds produced under their guidance was high. This includes both from the perspective of technical validity but also with respect to the content that the feeds contained.In combination with the Data Definitions and Vocabulary documents – available via the website – the validator aims to help drive the quality and consistency of feeds produced by the JISC-funded Course Data Programme. It’s important to note that you will need access to both the XCRI-CAP 1.2 specification (the wiki) and the Data Definitions and Vocabulary documents (on the website) in order to produce a valid feed.
The validator works in three ways. Each of these do separate checks and they aim to pretty much build upon each other.Firstly, the system checks that the file is structurally-sound XML. This identifies things such as incorrect tag nesting, issues with undeclared namespace prefixes, that kind of thing. Any issues that are found are run through a “translator” to get a helpful error message rather than an obscure one from the XML subsystem.Secondly, the system checks that the file is valid according to the XML Schemas. XML Schemas declare what the structure of a document is – what elements from what namespaces are allowed, how many of them, etc. XML Schema documents for XCRI-CAP 1.2 have been made available through the XCRI.co.uk website and these schemas will be used by default. You CAN override those schemas by referencing others within your feed using schemaLocation – for expansion, for example – but this isn’t recommended as it may lead to inconsistencies in the feeds. However, it will respect them if you do.Then, thirdly, the system checks that the file is valid according to a rule-base which has been developed. This additional level of validation is required firstly because XML Schema is limited in some of the things it can express, but secondly because the XML Schema files only contain the XCRI-CAP 1.2 specification, NOT the additional rules from within the Data Definitions Document. In my experience so far, this is where some people have become unstuck. If you don’t have the data definitions and vocabulary framework documents then get them and read through. They’re available in a couple of different formats depending upon what’s easiest for your team to use.
So, once you’ve validated a feed, what do you end up with? We’ll go and do a couple of examples in a minute (assuming the connectivity works) but basically:You get a summary of issues, broken down by severity. There are three severities of issues: Exceptions, Warnings and Recommendations:Exceptions consist of structural issues (incorrect elements, casing issues, namespaces, some formatting…)Warnings consist of less important issues, but issues that should still be corrected (elements that shouldn’t be used, potential truncation of elements, some formatting)Recommendations consist of the issues that you should highly consider resolving, or that require manual checkingYou can click on each severity and get more information on the issues.Issues are then shown, one for each rule or exception that was encountered. So if you have 100 elements that contain a date formatted the wrong way, you only get a single line shown up. As most feeds will be generated by some code, this is likely to only be a single fix that’s required.For every issue or exception that’s encountered, the text is parsed and converted into something which is more usable, if it can. This will often include links out to the wiki or references back into the Data Definitions Document for further information, as well as guidance on fixing the issue.For every issue or exception that’s encountered, you can choose to click and drill down into more information including the line and character information if that’s exposed by the XML subsystem during validation.
“Start with small XML snippets”For example: start with a root <catalog /> element and a single provider within it. This will allow you to test most of your namespace prefixes, as well as identifying formatting for elements like telephone numbers, without having to deal with lots of issues caused by courses. Once you’ve got that validating (aside from the exception about there being no courses…!), add a single course. Then a single presentation. And so on. Once you have a validating feed, use that as a template for the XML your Course Management System is to produce.“Use the forum”Despite the best efforts of everyone involved, there’s always the possibility that you find an issue with the validator, don’t understand the exception text that’s being raised, or have an issue with one of the rules being run. If that’s the case then raise the issue on the XCRI forum. It’s not the most heavily utilised but you’ll find a lot of technical people check it on a fairly-frequent basis.“Manual checking”There are a couple of rules within the rulebase that may require you to manually check. These are rules that we can’t currently programmatically check. These include things like “only use the contributor element when other refinements are not available”, or “producers should use URLs for identifiers that also resolve to human-readable content”. You need to check these and disregard the issue as appropriate.“Validation is iterative”That’s a very important point. The validator itself uses xpath to identify elements to check the rules against. You can’t run a file through the validator, fix the issues, and assume it’s then fine. You need to check it again. A good example is a feed that contains a <presentation /> element within the wrong namespace. The validator will highlight the namespace issue but, because the namespace is incorrect, it won’t then run the <presentation /> validation rules on its contents.
I think that’s the waffle out the way. This is the important part: how do you get at it?The easiest way is to use the online version at http://validator.xcri.co.uk. All you need to do is go there with a web browser and either point it at a publically-available URL for your feed or, if it’s in development, paste in your XML file, and it’ll validate. The advantage of this is that if there’re any bug fixes or changes to the rulebase, or anything like that, you’ll get them automatically.That said, the project is open-source and can be downloaded from the Google Code repository you can see up there. It’s a Mercurial repository so you’ll need a Mercurial client. It’s a .NET 4.0 application written in C# so you’ll probably need Visual Studio 2010 (or 2012 if you’re really up to date) to use it. If anyone wants to make changes and push them back then catch me later and I can add you as a contributor.However, the only real reason I think that people will want to do that is if they want to include the validation code as part of a CI process or something similar; MOST people should just use the online version.