<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>  XML</title>
	<link>http://xml.indelv.com</link>
	<description>Web Standards News &#187; XML</description>
	<pubDate>Fri, 22 Aug 2008 14:57:01 +0000</pubDate>
	<language>en</language>
			<item>
		<title>What is XML?</title>
		<link>http://xml.indelv.com/what-is-xml.html</link>
		<pubDate>Sat, 17 May 2008 20:35:07 +0000</pubDate>
		<description><![CDATA[XML is a markup language for structured documentation. Structured documents are documents that contain both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption, etc.). [...]]]></description>
			<content:encoded><![CDATA[<p>XML is a markup language for structured documentation. Structured documents are documents that contain both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption, etc.). Almost all documents have some structure.</p>
<p>A markup language is a mechanism to identify structures in a document. The XML specification defines a standard way of adding markup to documents.</p>
<h3>So XML is Just Like HTML?</h3>
<p>No. In HTML, both the tag semantics and the tag set are fixed. An &lt;h1&gt; is always a first level heading and the tag &lt;ati.product.code&gt; is meaningless. The W3C, in conjunction with browser vendors and the WWW community, is constantly working to extend the definition of HTML to allow new tags to keep pace with changing technology and to bring variations in presentation (stylesheets) to the Web. However, these changes are always rigidly confined by what the browser vendors have implemented and by the fact that backward compatibility is paramount. And for people who want to disseminate information widely, this has to include more than just the latest releases of Netscape and Internet Explorer.</p>
<p>XML specifies neither semantics nor a tag set. In fact XML is really a meta-language for describing markup languages. In other words, XML provides a facility to define tags and the structural relationships between them. Since there&#8217;s no predefined tag set, there can&#8217;t be any preconceived semantics. All of the semantics of an XML document will either be defined by the applications that process them or by stylesheets.</p>
<h3> So XML Is Just Like SGML?</h3>
<p>No. Well, yes, sort of. XML is defined as an application profile of SGML. SGML is the Standard Generalized Markup Language defined by ISO 8879. SGML has been the standard, vendor-independent way to maintain repositories of structured documentation for more than a decade, but it is not well suited to serving documents over the web (for a number of technical reasons beyond the scope of this article). Defining XML as an application profile of SGML means that any fully conformant SGML system will be able to read XML documents. However, using and understanding XML documents does not require a system that is capable of understanding the full generality of SGML. XML is a much-restricted form of SGML.</p>
<p>For technical purists, it&#8217;s important to note that there may also be subtle differences between documents as understood by XML systems and those same documents as understood by SGML systems. In particular, treatment of white space immediately adjacent to tags may be different.</p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fwhat-is-xml.html';
  addthis_title  = 'What+is+XML%3F';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>XProc: An XML Pipeline Language</title>
		<link>http://xml.indelv.com/xproc-an-xml-pipeline-language.html</link>
		<pubDate>Wed, 07 May 2008 05:24:49 +0000</pubDate>
		<description><![CDATA[An XML Pipeline specifies a sequence of operations to be performed on a collection of XML input documents. Pipelines take zero or more XML documents as their input and produce zero or more XML documents as their output.A pipeline consists of steps. Like pipelines, steps take zero or more XML documents as their input and [...]]]></description>
			<content:encoded><![CDATA[<p>An XML Pipeline specifies a sequence of operations to be performed on a collection of XML input documents. Pipelines take zero or more XML documents as their input and produce zero or more XML documents as their output.A pipeline consists of steps. Like pipelines, steps take zero or more XML documents as their input and produce zero or more XML documents as their output. The inputs to a step come from the web, from the pipeline document, from the inputs to the pipeline itself, or from the outputs of other steps in the pipeline. The outputs from a step are consumed by other steps, are outputs of the pipeline as a whole, or are discarded.</p>
<p>There are two kinds of steps: atomic steps and compound steps. Atomic steps carry out single operations and have no substructure as far as the pipeline is concerned, whereas compound steps include a subpipeline of steps within themselves.</p>
<p>This specification defines a standard library, Appendix A, Standard Step Library, of steps. Pipeline implementations may support additional types of steps as well.</p>
<p>source: <a rel="nofollow" href="http://www.w3.org/TR/xproc/">http://www.w3.org/TR/xproc/</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fxproc-an-xml-pipeline-language.html';
  addthis_title  = 'XProc%3A+An+XML+Pipeline+Language';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>Reusing XML Processing Code in non-XML Applications</title>
		<link>http://xml.indelv.com/reusing-xml-processing-code-in-non-xml-applications.html</link>
		<pubDate>Sat, 08 Mar 2008 08:18:19 +0000</pubDate>
		<description><![CDATA[XML can be considered as a representation of hierarchical data, and the XML-related standards - as methods of processing such data. We describe benefits of XML view on legacy data and its processing, and suggest a method to develop XML tools and make them reusable for different tree-like structures in different programming languages.
Our approach is [...]]]></description>
			<content:encoded><![CDATA[<p>XML can be considered as a representation of hierarchical data, and the XML-related standards - as methods of processing such data. We describe benefits of XML view on legacy data and its processing, and suggest a method to develop XML tools and make them reusable for different tree-like structures in different programming languages.<br />
Our approach is to use virtual machine technology, in particular, the Scheme programming language. We&#8217;re taking the unusual step of using the Scheme syntax itself as a native virtual machine language. Together with the SXML format and Scheme implementations tuning, it gives us the XML virtual machine (XML VM).<br />
Reference implementations are ready for the Python and C languages. We describe a library for XSLT-like transformations of the Python parse trees and a special version of the GNU find utility which supports XPath queries over the file system.</p>
<p>The basis of some applications is hierarchical data structures plus methods of processing the data. Possible examples are compilers, interpreters and text processors. The former two may use abstract syntax trees (ASTs) to represent results of parsing a program and some other trees to deal with code transformations. Text processors may use trees to represent the structure or the formatting properties of a document.<br />
Although the applications are from different domains, the basic operations on trees are the same. For example, getting list of children is a standard functionality for any tree. Some more advanced operations (for example, getting children with filtering) are also common. The problem is that possibly complex code for the advanced operations should be written and being updated for all the tree models, so maintenance become nightmare.<br />
The possible solution for elimination of code duplication is to unify the tree models. As XML is now extremely popular, it&#8217;s reasonable to choose XML as an universal representation for trees. For needs of our work, the most fruitful feature of XML is existence of XML-related standards which in fact are design patterns for tree processing. And one of the most useful standards is XPath. In this paper, we give examples of XML and XPath and discuss benefits of seamless use of XML tools in legacy applications.</p>
<p>Read more on: <a rel="nofollow" href="http://uucode.com/texts/genxml/genxml.html">http://uucode.com/texts/genxml/genxml.html</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Freusing-xml-processing-code-in-non-xml-applications.html';
  addthis_title  = 'Reusing+XML+Processing+Code+in+non-XML+Applications+';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>An Introduction to XML Processing with Lark and Larval</title>
		<link>http://xml.indelv.com/an-introduction-to-xml-processing-with-lark-and-larval.html</link>
		<pubDate>Sat, 08 Mar 2008 08:17:35 +0000</pubDate>
		<description><![CDATA[Abstract
Lark is a non-validating XML processor implemented in the Java language; it attempts to achieve good trade-offs among compactness, completeness, and performance. Larval is a validating XML processor built on the same code base as Lark. This report gives an overview of the motivations for, facilities offered by, and usage of, the Lark processor.
This document [...]]]></description>
			<content:encoded><![CDATA[<p>Abstract<br />
Lark is a non-validating XML processor implemented in the Java language; it attempts to achieve good trade-offs among compactness, completeness, and performance. Larval is a validating XML processor built on the same code base as Lark. This report gives an overview of the motivations for, facilities offered by, and usage of, the Lark processor.</p>
<p>This document and the Lark software are copyright © 1997 by Tim Bray; all rights reserved. However, Lark is available on the Internet for general public use.</p>
<p>This note applies to the final beta of version 1.0 of Lark, and release 0.8 of Larval, in use in January 1998. In this note, the name Lark refers to both Lark and Larval, unless otherwise noted.</p>
<p>Why Lark?<br />
1 Motivations:</p>
<p>Lark&#8217;s creation was driven by the following motivations:</p>
<p>Personal Gratification<br />
Writing language processors is fun, particularly when you have the chance to fix the language.<br />
Desire to Learn Java<br />
It&#8217;s about time, and Java seems like the appropriate language for the job.<br />
Test Compliance with Design Goals<br />
In particular, XML Design Principle #4, which states that &#8220;It shall be easy to write programs which process XML documents.&#8221;<br />
Expore the API Design Space<br />
There is a chance, while XML is young, to make some real progress in the design of processor API&#8217;s. The design of Lark makes very few assumptions about the user interface; thus Lark should be useful as an experimental testbed in this area.<br />
$$$<br />
Perhaps Lark will turn out to be useful. I have not the slightest desire to start another software company (been there, done that, got the T-shirts), but it would be nice to figure out a way to get paid for the time I&#8217;ve put in writing it.</p>
<p>2 Conclusions:<br />
Yes, writing Lark was fun. In particular, none of the innocent-looking things in XML turned out, in practice, to be too horribly difficult. And Java is indeed a Happy Hunting Ground for programmers.</p>
<p>On the design-goal-compliance front, the good news is that if you wanted a program to process XML that you knew was well-formed, you could probably bash it out in perl (don&#8217;t know about Java) in a day or so. On the other hand, if you want to build a general-purpose tool that does all of XML and provides helpful error messages and a useful API, the nominal week is not nearly enough. The development of Lark has consumed about a month at this point in time, stretched over a year&#8217;s elapsed time.</p>
<p>I do think that Lark will be useful for exploring API designs. Of course, none of this will happen unless there are people out there who want to use an XML processor for something or other. Among other things, Lark currently has no user interface at all; while I don&#8217;t mind editing the Driver.java file and recompiling to run tests, presumably a UI would be a good thing to have.</p>
<p>As for the financial aspects, I&#8217;m kind of gloomy. I think most XML processors are going to be purpose-built for the needs of particular applications, and will thus hide inside them. Which is good; XML&#8217;s simplicity makes this approach cost-effective. Failing that, processors will be full-dress validating parsers with incremental parsing for authoring support. So I&#8217;m not sure that there&#8217;s all that much need for a standalone processor; but I&#8217;d love to be wrong.</p>
<p>Just in case, for the moment I&#8217;m going to be giving away all the .class files, and some of the Java source code, but not the source code for the three classes with the hard bits. In any case, they&#8217;re sure to be buggy at this stage and I wouldn&#8217;t want to be letting them out of my hands with a bit more polishing. If you can see a way to get a little revenue out of this project, give me a call.</p>
<p>Lark Feature Set Overview:</p>
<p>1 Compactness<br />
(The figures below refer to Lark 0.97; they will be updated for 1.0 when it comes out of final beta status.)</p>
<p>Since an XML processor is often going to run on the client and presumably need to be delivered over the network, it must be compact. At the moment, the total byte count is around 45K, which is not too bad.</p>
<p>There is some more scope for compression, when some useful facilities appear in the Java class libraries that ought to be there; e.g. usable symbol table and better Unicode support.</p>
<p>2 Performance<br />
At the moment, Lark, running under the Win95 J++ &#8220;Jview&#8221; application viewer on an underconfigured P100 notebook, runs at about 200K/second. I am fairly happy with this performance, and doubt whether a full-featured processor implemented in Java can really be made to run much faster.</p>
<p>3 Completeness<br />
Lark is a processor only; it does not attempt to validate. It does read the DTD, with parameter entity processing; it processes attribute list declarations (to find default values) and entity declarations. Lark is relatively full-featured; it implements (I think) everything in the XML spec and reports violations of well-formedness.</p>
<p>Lark&#8217;s error-handling is draconian. After encountering the first well-formedness error, no further internal data structures are built or returned to the application. However, Lark does continue processing the document looking for more syntax errors (and in fact performing some fairly aggressive heuristics on the tag stack in order to figure out what&#8217;s going on), and calling the doSyntaxError application callback (see below) to report further such errors.</p>
<p>Larval is a full validating XML processor; it reports violations of validity constraints, but does not apply draconian error handling to them.</p>
<p>4 API<br />
Lark presents as a set of Java classes. Those named Element, Attribute, and Entity are obvious in their function. One lesson of this activity is that it may be possible for such classes to be shared independent of the parser architecture; it would be very handy if all XML-processing Java apps used the same Element class, at least as a basis for subclassing.</p>
<p>The Text and Segment classes do Lark&#8217;s character data management; details are below.</p>
<p>From an application&#8217;s point of view, the Lark and Handler classes are central. Handler has methods such as doPI, doSTag, doEntityReference, doEtag; the application passes a Handler instance to Lark&#8217;s readXML method, and Lark calls the routines as it recognizes significant objects in the XML document. The base class provides do-nothing methods; the intent is that an application would subclass Handler to provide the appropriate processing semantics.</p>
<p>Along with presenting this event stream to the application, Lark can optionally build a parse tree, and if so doing, can optionally save copies of the XML document&#8217;s character data, all in parallel with providing the event stream. Lark provides methods to toggle these behaviors. These methods may be used in the Handler callbacks while Lark is running, to build the parse tree or save the text for only a subset of the document.</p>
<p>In building the parse tree, Lark is guaranteed to update only elements which are still open; i.e. for which the end-tag has not been seen. All other sections of the tree, and the entire tree once Lark has hit end-of-file, may be manipulated freely by the application.</p>
<p>An instance of Lark may be initialized with an optional list of element GI&#8217;s which are to be considered as those of empty elements, whether or not the XML &#8220;/&gt;&#8221; syntax is used. A typical set might begin: &#8220;HR&#8221;, &#8220;BR&#8221;, &#8220;IMG&#8221;, &#8230;.</p>
<p>Another initializer allows a set of entities to be predefined.</p>
<p>Lark also provides the application access to the &#8220;entity tree&#8221;; there is a method that toggles whether Lark attempts to retrieve and parse external entities.</p>
<p>5 Error Handling<br />
Lark makes a serious effort to be robust, by providing useful error messages and continuing to do so after the first error. The error handling is good enough that I now use Lark as my primary tool to debug broken XML files.</p>
<p>6 Text Segment Management<br />
Probably due to my background in the indexing and search business, Lark pays more attention than is perhaps strictly necessary to the location of objects within the XML file. Lark informs the application of the containing entity and begin/end offsets of each element. A chunk of character data in an element, which may look contiguous to an application, may in fact map to several different byte ranges in different entities, due to the effect of entity references. Also, the use of encodings such as UTF8 may cause the number of bytes of underlying document to differ from the number of bytes that makes up the characters in a chunk of text. Lark represents Text objects as a vector of Segment objects, each of which gives information about the source offset and length, and the number of characters in the segment. If text-saving has not been turned on, the segments contain no character data, but still contain the offset information.</p>
<p>7 Entity Handling<br />
Lark does full XML entity handling. Java provides facilities which make this trivially easy. The application can turn the inclusion of external text entities on and off. Lark makes no use of PUBLIC identifiers, aside from passing them to the callback in the Handler upon recognizing the declaration.</p>
<p>8 Concurrency<br />
Lark is thread-safe. Multiple Larks can run in parallel threads, with other threads doing useful processing of under-construction document trees.</p>
<p>source: <a rel="nofollow" href="http://www.textuality.com/Lark/">http://www.textuality.com/Lark/</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fan-introduction-to-xml-processing-with-lark-and-larval.html';
  addthis_title  = 'An+Introduction+to+XML+Processing+with+Lark+and+Larval';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>Service-Oriented Architecture (SOA) and Web Services: The Road to Enterprise Application Integration (EAI)</title>
		<link>http://xml.indelv.com/service-oriented-architecture-soa-and-web-services-the-road-to-enterprise-application-integration-eai.html</link>
		<pubDate>Mon, 03 Mar 2008 23:38:50 +0000</pubDate>
		<description><![CDATA[Most enterprises have made extensive investments in system resources over the course of many years. Such enterprises have an enormous amount of data stored in legacy enterprise information systems (EIS), so it&#8217;s not practical to discard existing systems. It&#8217;s more cost-effective to evolve and enhance EIS. But how can this be done? Service Oriented Architecture [...]]]></description>
			<content:encoded><![CDATA[<p>Most enterprises have made extensive investments in system resources over the course of many years. Such enterprises have an enormous amount of data stored in legacy enterprise information systems (EIS), so it&#8217;s not practical to discard existing systems. It&#8217;s more cost-effective to evolve and enhance EIS. But how can this be done? Service Oriented Architecture (SOA) provides a cost-effective solution.</p>
<p>SOA is not a new concept. Sun defined SOA in the late 1990&#8217;s to describe Jini, which is an environment for dynamic discovery and use of services over a network. Web services have taken the concept of services introduced by Jini technology and implemented it as services delivered over the web using technologies such as XML, Web Services Description Language (WSDL), Simple Object Access Protocol (SOAP), and Universal Description, Discovery, and Integration(UDDI). SOA is emerging as the premier integration and architecture framework in today&#8217;s complex and heterogeneous computing environment. Previous attempts didn&#8217;t enable open interoperable solutions, but relied on proprietary APIs and required a high degree of coordination between groups. SOA can help organizations streamline processes so that they can do business more efficiently, and adapt to changing needs and competition, enabling the software as a service concept. eBay for example, is opening up its web services API for its online auction. The goal is to drive developers to make money around the eBay platform. Through the new APIs, developers can build custom applications that link to the online auction site and allow applications to submit items for sale. Such applications are typically aimed at sellers, since buyers must still head to ebay.com to bid on items. This type of strategy, however, will increase the customer base for eBay.</p>
<p>SOA and web services are two different things, but web services are the preferred standards-based way to realize SOA. This article provides an overview of SOA and the role of web services in realizing it. The article provides:</p>
<p>* An overview of software as a service<br />
* A tutorial on SOA<br />
* An overview of Sun&#8217;s platforms for building web services<br />
* Guidelines for designing interoperable web services<br />
* Challenges in moving to SOA<br />
* An overview of Java Business Integration (JSR 208)<br />
* A discussion of web services for enterprise application integration</p>
<p>Service-Oriented Architecture</p>
<p>SOA is an architectural style for building software applications that use services available in a network such as the web. It promotes loose coupling between software components so that they can be reused. Applications in SOA are built based on services. A service is an implementation of a well-defined business functionality, and such services can then be consumed by clients in different applications or business processes.</p>
<p>SOA allows for the reuse of existing assets where new services can be created from an existing IT infrastructure of systems. In other words, it enables businesses to leverage existing investments by allowing them to reuse existing applications, and promises interoperability between heterogeneous applications and technologies. SOA provides a level of flexibility that wasn&#8217;t possible before in the sense that:</p>
<p>* Services are software components with well-defined interfaces that are implementation-independent. An important aspect of SOA is the separation of the service interface (the what) from its implementation (the how). Such services are consumed by clients that are not concerned with how these services will execute their requests.<br />
* Services are self-contained (perform predetermined tasks) and loosely coupled (for independence)<br />
* Services can be dynamically discovered<br />
* Composite services can be built from aggregates of other services</p>
<p>SOA uses the find-bind-execute paradigm as shown in Figure 1. In this paradigm, service providers register their service in a public registry. This registry is used by consumers to find services that match certain criteria. If the registry has such a service, it provides the consumer with a contract and an endpoint address for that service.</p>
<p>SOA-based applications are distributed multi-tier applications that have presentation, business logic, and persistence layers. Services are the building blocks of SOA applications. While any functionality can be made into a service, the challenge is to define a service interface that is at the right level of abstraction. Services should provide coarse-grained functionality.<br />
Realizing SOA with Web Services</p>
<p>Web services are software systems designed to support interoperable machine-to-machine interaction over a network. This interoperability is gained through a set of XML-based open standards, such as WSDL, SOAP, and UDDI. These standards provide a common approach for defining, publishing, and using web services.</p>
<p>Sun&#8217;s Java Web Services Developer Pack 1.5 (Java WSDP 1.5) and Java 2 Platform, Enterprise Edition (J2EE) 1.4 can be used to develop state-of-the-art web services to implement SOA. The J2EE 1.4 platform enables you to build and deploy web services in your IT infrastructure on the application server platform. It provides the tools you need to quickly build, test, and deploy web services and clients that interoperate with other web services and clients running on Java-based or non-Java-based platforms. In addition, it enables businesses to expose their existing J2EE applications as web services. Servlets and Enterprise JavaBeans components (EJBs) can be exposed as web services that can be accessed by Java-based or non-Java-based web service clients. J2EE applications can act as web service clients themselves, and they can communicate with other web services, regardless of how they are implemented.</p>
<p>source : <a rel="nofollow" href="http://java.sun.com/developer/technicalArticles/WebServices/soa/">http://java.sun.com/developer/technicalArticles/WebServices/soa/</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fservice-oriented-architecture-soa-and-web-services-the-road-to-enterprise-application-integration-eai.html';
  addthis_title  = 'Service-Oriented+Architecture+%28SOA%29+and+Web+Services%3A+The+Road+to+Enterprise+Application+Integration+%28EAI%29';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>XML-Signature Requirements:</title>
		<link>http://xml.indelv.com/xml-signature-requirements.html</link>
		<pubDate>Mon, 03 Mar 2008 23:32:46 +0000</pubDate>
		<description><![CDATA[Abstract:
This document lists the design principles, scope, and requirements for the XML Digital Signature specification. It includes requirements as they relate to the signature syntax, data model, format, cryptographic processing, and external requirements and coordination.
Status of this document:
This Working Draft of XML Signature Requirements is a very stable result of this Working Draft having been [...]]]></description>
			<content:encoded><![CDATA[<p>Abstract:<br />
This document lists the design principles, scope, and requirements for the XML Digital Signature specification. It includes requirements as they relate to the signature syntax, data model, format, cryptographic processing, and external requirements and coordination.</p>
<p>Status of this document:<br />
This Working Draft of XML Signature Requirements is a very stable result of this Working Draft having been advanced through W3C Last Call. Relatively small changes have been made to clarify the stated requirements during that period. This document will now be advanced as an IETF Informational RFC.</p>
<p>Requirements:</p>
<p>1. Signature Data Model and Syntax:<br />
XML-signature data structures must be based on the RDF data model [RDF] but need not use the RDF serialization syntax. [Charter]<br />
XML-signatures apply to any resource addressable by a locator &#8212; including non-XML content. XML-signature referents are identified with XML locators (URIs or fragments) within the manifest that refer to external or internal resources (i.e., network accessible or within the same XML document/package). [Berners-Lee, Brown, List(Vincent), WS, XFDL]<br />
XML-signatures must be able to apply to a part or totality of a XML document.  [Charter, Brown]</p>
<p>Multiple XML-signatures must be able to exist over the static content of a Web resource given varied keys, content transormations, and algorithm specifications (signature, hash, canonicalization, etc.). [Charter, Brown]<br />
XML-signatures are first class objects themselves and consequently must be able to be referenced and signed. [Berners-Lee]<br />
The specification must permit the use of varied digital signature and message authentication codes, such as symmetric and asymmetric authentication schemes as well as dynamic agreement of keying material. [Brown] Resource or algorithm identifier are a first class objects, and must be addressable by a URI. [Berners-Lee]<br />
XML-signatures must be able to apply to the original version of an included/encoded resource. [WS-list (Brown/Himes)]</p>
<p>2. Format:<br />
An XML-signature must be an XML element (as defined by production 39 of the XML1.0 specification. [XML])<br />
When XML signatures are placed within a document the operation must preserve (1) the document&#8217;s root element tag as root and (2) the root&#8217;s descendancy tree except for the addition of signature element(s) in places permitted by the document&#8217;s content model. For example, an XML form, when signed, should still be recognizable as a XML form to its application after it has been signed. [WS-summary]<br />
XML-signature must provide a mechanism that facilitates the production of composite documents &#8212; by addition or deletion &#8212;  while preserving the signature characteristics (integrity, authentication, and non-repudiatability) of the consituent parts. [Charter, Brown, List(Bugbee)]<br />
An important use of XML-signatures will be detached Web signatures. However, signatures may be embedded within or encapsulate XML or encoded content. [Charter] This WG must specify a simple method of packaging and encapsulation if no W3C Recommendation is available.</p>
<p>3. Cryptography and Processing:<br />
The specification must permit arbitrary cryptographic signature and message authentication algorithms, symmetric and asymmetric authentication schemes, and key agreement methods. [Brown]<br />
The specification must specify at least one mandatory to implement signature canonicalization, content canonicalization, hash, and signature algorithm.<br />
In the event of redundant attributes within the XML Signature syntax and relevant cryptographic blobs, XML Signature applications prefer the XML Signature semantics.<br />
Comment: Another possibility is that an error should be generated, however it isn&#8217;t where a conflict will be flagged between the various function and application layers regardless.</p>
<p>The signature design and specification text must not permit implementers to erroneously build weak implementations susceptible to common security weaknesses (such as as downgrade or algorithm substitution attacks).</p>
<p>4.Coordination:<br />
The XML Signature specification should meet the requirements of the following applications:<br />
Internet Open Trading Protocol v1.0 [IOTP]<br />
Financial Services Mark Up Language v2.0 [Charter]<br />
At least one forms application [XFA, XFDL]<br />
To ensure that all requirements within this document are adequately addressed, the XML Signature specification must be reviewed by a designated member of the following communities:<br />
XML Syntax Working Group: canonicalization dependencies. [Charter]<br />
XML Linking Working Group: signature referants. [Charter]<br />
XML Schema Working Group: signature schema design. [Charter]<br />
Metadata Coordination Group: data model design. [Charter]<br />
W3C Internationalization Interest Group:  [AC Review]<br />
XML Package Working Group: signed content in/over packages.<br />
XML Fragment Working Group: signing portions of XML content.</p>
<p>source:<a rel="nofollow" href="http://www.w3.org/TR/xmldsig-requirements">http://www.w3.org/TR/xmldsig-requirements<br />
</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fxml-signature-requirements.html';
  addthis_title  = 'XML-Signature+Requirements%3A';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>Three Types of XML Signature:</title>
		<link>http://xml.indelv.com/three-types-of-xml-signature.html</link>
		<pubDate>Mon, 03 Mar 2008 23:32:08 +0000</pubDate>
		<description><![CDATA[The W3C recommendation allows any digital data to be signed, and this includes an XML document, an XML element of a document, and the content of an XML element as particular cases.
When we talk about an XML signature, we are actually referring to an XML document, which contains the Signature (defined in the namespace http://www.w3.org/2000/09/XMLdsig#) [...]]]></description>
			<content:encoded><![CDATA[<p>The W3C recommendation allows any digital data to be signed, and this includes an XML document, an XML element of a document, and the content of an XML element as particular cases.</p>
<p>When we talk about an XML signature, we are actually referring to an XML document, which contains the Signature (defined in the namespace http://www.w3.org/2000/09/XMLdsig#) as one element (which may be the root element). But the document may also contain other elements, among which the most important are, of course, the original data objects being signed.</p>
<p>Depending on how those data objects relate to the Signature element in an XML Signature document, we consider three different types of XML signatures.</p>
<p>Enveloping: The data objects are contained within the same XML document as the Signature element, and are further included in the Signature element (as sub-elements of Object, for example).</p>
<p>Enveloped: The data object is found within the same XML document as the Signature element, and actually includes the Signature as a sub-element.</p>
<p>Detached: The Signature refers to external network resources, or the data object is within the same XML document as the Signature element, but is a sibling element, or is a sub-element of its sibling element.</p>
<p>Some writings on XML Signature leave readers the impression that this is an exclusive classification of XML signatures; others implicitly suggest that, in enveloping or enveloped signatures, there is actually an Envelop element in the XML document containing the signature; and still others imply that for an enveloping signature, Signature is the root element of the XML document. These are all plainly wrong.</p>
<p>Data Integrity and Message Authentication<br />
The main purpose of XML digital signature is to ensure the integrity of data. RFC 2828, Internet Security Glossary, defines integrity as &#8220;the property that data has not been changed, destroyed, or lost in an unauthorized or accidental manner.&#8221; Storing or transiting the data together with a checksum can achieve data integrity in this sense. Strictly speaking, XML Signature ensures more than such integrity. It provides support for what RFC 2828 refers to as message authentication, the property &#8220;given an authentication code/protected checksum, that tampering with both the data and checksum, so as to introduce changes while seemingly preserving integrity, are still detected.&#8221;</p>
<p>source:<a rel="nofollow" href="http://today.java.net/pub/a/today/2006/11/21/xml-signature-with-jsr-105.html">http://today.java.net/pub/a/today/2006/11/21/xml-signature-with-jsr-105.html</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fthree-types-of-xml-signature.html';
  addthis_title  = 'Three+Types+of+XML+Signature%3A';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>Addressing with XPointer</title>
		<link>http://xml.indelv.com/addressing-with-xpointer.html</link>
		<pubDate>Mon, 03 Mar 2008 23:31:44 +0000</pubDate>
		<description><![CDATA[XPointer allows you to walk the tree of nodes that an XML document is comprised of to address a specific node or nodes. XPointer expands the syntax set forth by XPath to provide a means of creating fragment identifiers, which are used to specify parts of documents. XPointer provides considerably more control over the referencing [...]]]></description>
			<content:encoded><![CDATA[<p>XPointer allows you to walk the tree of nodes that an XML document is comprised of to address a specific node or nodes. XPointer expands the syntax set forth by XPath to provide a means of creating fragment identifiers, which are used to specify parts of documents. XPointer provides considerably more control over the referencing of XML document data than the hyperlink approach employed by HTML. For example, XPointer allows you to do things such as address an element with a given value within a list of elements of a given type. You use XPointer expressions in XML links by appending them onto the end of URIs with a pound symbol (#), as in the separation between a URI and an XPointer expression. The next few sections break down XPointer into further detail and demonstrate exactly how to create XPointer expressions.</p>
<h3> Building XPointer Expressions</h3>
<p>The most important component of XPointer expressions is the location path, which is a construct used to describe the path that must be followed to arrive at a node within an XML document tree. Location paths are the building blocks of XPointer expressions, which are evaluated to arrive at a specific location within a tree. More specifically, location paths allow you to traverse siblings, ancestors, children, and descendants of nodes, not to mention attributes. Location paths are broken down into two basic typesabsolute paths and general paths.</p>
<p>Absolute location paths point to a specific location within an XML tree, and therefore aren&#8217;t dependent on context. Following are the different absolute location paths defined in XPointer:</p>
<p style="background-color: #ccffff">*<br />
/ Locates the root node, which is the parent node for the entire document tree<br />
<span style="background-color: #ccffff"> *</span></p>
<p style="background-color: #ccffff">id(Name) Locates the element with an attribute ID value of Name<br />
*</p>
<p style="background-color: #ccffff">here() Locates the node containing the current XPointer expression<br />
*
</p>
<p style="background-color: #ccffff">origin() Locates the sub-resource from which the user initiated a link (used with out-of-line links)</p>
<p>The most important absolute location paths are the root and id() paths. The root path is represented by a forward slash (/), and is often used at the start of an XPointer expression as the basis for absolute location paths. The id() location path is used to locate an element with a specific attribute value.</p>
<p>In addition to absolute location paths, XPointer also defines a rich set of relative location paths. Relative location paths are always relative to some node, which is known as the context node for the path. Following are the relative location paths available for use in XPointer expressions:</p>
<p style="background-color: #ccffff">*<br />
child Locates child nodes of the context node<br />
*<br />
descendant Locates nodes within the context node<br />
*<br />
descendant-or-self Same as descendant except the context node is also included<br />
*<br />
parent Locates nodes one level above the context node that contains the context node<br />
*<br />
ancestor Locates all nodes above the context node that contain the context node<br />
*<br />
ancestor-or-self Same as ancestor except the context node is also included<br />
*<br />
preceding-sibling Locates sibling nodes that precede the context node<br />
*<br />
following-sibling Locates sibling nodes that follow the context node<br />
*<br />
preceding Locates nodes that precede the context node<br />
*<br />
following Locates nodes that follow the context node<br />
*<br />
self Locates individual context nodes within a list of context nodes<br />
*
</p>
<p style="background-color: #ccffff">attribute Locates attributes of the context node</p>
<p>If you&#8217;re totally confused by all this context node talk, don&#8217;t worry because it will all make sense in a moment. As confusing as it may seem, the relative location paths in the previous list really are quite useful and are much easier to use than you might think. The next section shows you how to use these location paths to create expressions in XPointer.</p>
<h3> Creating XPointers</h3>
<p>Seeing a few examples of XPointer expressions can make all the difference in understanding how XPointer is used to define document fragment identifiers. Following is an example of a simple XPointer expression:</p>
<p style="background-color: #ccffff">child::factoid</p>
<p>This example uses the child relative location path to locate all of the children of the context node that are of element type factoid. Let me rephrase it in a different way: The sample expression locates element nodes of type factoid that are child nodes of the context node. Keep in mind that the context node is the node from which you are issuing the expression, which is a lot like the current path of a file system when you&#8217;re browsing for files. Also, it&#8217;s worth clarifying that the XPointer expression child::factoid simply describes the fragment identifier for a resource and is not a complete resource reference. When used in a complete expression, you would pair this fragment identifier with a URI that is assigned to an href attribute, like this:</p>
<p style="background-color: #ccffff">href=&#8221;http://www.stalefishlabs.com/factoids.xml#child::factoid&#8221;</p>
<p>In this example, a URI is specified that references the XML document named factoids.xml. The XPointer expression is then provided as a fragment identifier, which is separated from the URI by a pound symbol (#). This is the typical way in which XPointers are used, although expressions can certainly get more complex than this.</p>
<p><a rel="nofollow" href="http://www.brainbell.com/tutorials/XML/Addressing_With_XPointer.htm" title="Brainbell" target="_blank">Read more on Brainbell </a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Faddressing-with-xpointer.html';
  addthis_title  = 'Addressing+with+XPointer';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>XML Trust Services - XKMS:</title>
		<link>http://xml.indelv.com/xml-trust-services-xkms.html</link>
		<pubDate>Sun, 06 Jan 2008 21:12:34 +0000</pubDate>
		<description><![CDATA[The XML Key Management Specification (XKMS) initiative was jointly developed by VeriSign, Microsoft and WebMethods as an open standard to simplify the securing of XML-based Internet transactions using PKI and digital certificates. The ability to secure all Web Services communications and transactions is critical for the success of Web Services in the enterprise.
With XKMS, developers [...]]]></description>
			<content:encoded><![CDATA[<p>The XML Key Management Specification (XKMS) initiative was jointly developed by VeriSign, Microsoft and WebMethods as an open standard to simplify the securing of XML-based Internet transactions using PKI and digital certificates. The ability to secure all Web Services communications and transactions is critical for the success of Web Services in the enterprise.</p>
<p>With XKMS, developers can integrate authentication, digital signature, and encryption services, such as certificate processing and revocation status checking, into applications in a matter of hours - without the constraints and complications associated with proprietary PKI software toolkits.</p>
<p>Features and Benefits:</p>
<p>1. Easy to develop<br />
The XKMS specification allows developers to rapidly implement trust features, incorporating cryptographic support for XML digital signatures and XML encryption using standard XML toolkits. The developer-friendly syntax used in XKMS eliminates the necessity for PKI toolkits and proprietary plug-ins.</p>
<p>2. Quick to deploy<br />
XKMS moves the complexity associated with PKI deployment to the server side components. Developers can now focus on their core competency of developing applications rather than the complexities surrounding a PKI deployment.</p>
<p>3. Open Standards<br />
The XKMS specification has been submitted to the World Wide Web Consortium (W3C) as an open standard for distribution and registration of keys. The common XML vocabulary used to describe authentication, authorization, and profile information in XML documents makes XKMS services completely platform, vendor, and transport-protocol independent.</p>
<p>4. Future-proof<br />
By restricting the impact of future PKI developments and advancements to the server-side components, XKMS protects developers and applications from becoming incompatible with the latest developments in PKI.</p>
<p>source: <a rel="nofollow" href="http://www.verisign.com/developer/xml/xkms.html">http://www.verisign.com/developer/xml/xkms.html</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Fxml-trust-services-xkms.html';
  addthis_title  = 'XML+Trust+Services+-+XKMS%3A';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
		<item>
		<title>Technology Reports of XML and Encryption:</title>
		<link>http://xml.indelv.com/technology-reports-of-xml-and-encryption.html</link>
		<pubDate>Sun, 06 Jan 2008 21:11:58 +0000</pubDate>
		<description><![CDATA[The World Wide Web Consortium (W3C) has announced the publication of XML Encryption Syntax and Processing and Decryption Transform for XML Signature as W3C Recommendations, signifying a &#8220;cross-industry agreement on an XML-based approach for securing XML data in a document. A W3C Recommendation indicates that a specification is stable, contributes to Web interoperability, and has [...]]]></description>
			<content:encoded><![CDATA[<p>The World Wide Web Consortium (W3C) has announced the publication of XML Encryption Syntax and Processing and Decryption Transform for XML Signature as W3C Recommendations, signifying a &#8220;cross-industry agreement on an XML-based approach for securing XML data in a document. A W3C Recommendation indicates that a specification is stable, contributes to Web interoperability, and has been reviewed by the W3C Membership, who favor its widespread adoption.&#8221; The Encryption document &#8220;specifies a process for encrypting data and representing the result in XML. The data may be arbitrary data (including an XML document), an XML element, or XML element content. The result of encrypting data is an XML Encryption element which contains or references the cipher data.&#8221; The Decryption Recommendation &#8220;specifies an XML Signature &#8216;decryption transform&#8217; that enables XML Signature applications to distinguish between those XML Encryption structures that were encrypted before signing (and must not be decrypted) and those that were encrypted after signing (and must be decrypted) for the signature to validate.&#8221;</p>
<p>W3C Specifications for XML Encryption Released as Proposed Recommendations.    The W3C XML Encryption Working Group has released Proposed Recommendation specifications for XML Encryption Syntax and Processing and Decryption Transform for XML Signature. Pending review of comments from the W3C Advisory Committee Members and the public, the specifications may reach Recommendation status after November 14, 2002. The XML Encryption document &#8220;specifies a process for encrypting data and representing the result in XML. The data may be arbitrary data (including an XML document), an XML element, or XML element content. The result of encrypting data is an XML Encryption element which contains or references the cipher data.&#8221; The Decryption document &#8220;specifies an XML Signature &#8216;decryption transform&#8217; that enables XML Signature applications to distinguish between those XML Encryption structures that were encrypted before signing (and must not be decrypted) and those that were encrypted after signing (and must be decrypted) for the signature to validate. XML Encryption is a method whereby XML content can be transformed such that it is discernable only to the intended recipients, and opaque to all others. There are many applications for such a specification given the increasing importance of XML on the Internet and Web including the protection of payment and transaction information.&#8221; [Full context]</p>
<p>XML Encryption Candidate Recommendation. XML Encryption Syntax and Processing. W3C Candidate Recommendation 02-August-2002. Edited by Donald Eastlake and Joseph Reagle.Second W3C Candidate Recommendation from the XML Encryption Working Group. &#8220;This document specifies a process for encrypting data and representing the result in XML. The data may be arbitrary data (including an XML document), an XML element, or XML element content. The result of encrypting data is an XML Encryption element which contains or references the cipher data.&#8221; See the &#8220;XML Encryption Implementation and Interoperability Report.&#8221;</p>
<p>[March 04, 2002]   W3C XML Encryption Working Group Releases Candidate Recommendation Specifications.    The W3C XML Encryption Working Group has published an updated XML Encryption Requirements document and has approved the release of XML Encryption Syntax and Processing and Decryption Transform for XML Signature as Candidate Recommendation specifications. The working group expects to meet the exit criteria for the two CRs, but solicits additional feedback (until April 25, 2002) based upon on implementation experience. The requirements specification outlines &#8220;the design principles, scope, and requirements for XML Encryption; it includes requirements as they relate to the encryption syntax, data model, format, cryptographic processing, and external requirements and coordination.&#8221; The core specification for XML Encryption Syntax and Processing defines &#8220;a process for encrypting data and representing the result in XML. The data may be arbitrary data (including an XML document), an XML element, or XML element content. The result of encrypting data is an XML Encryption EncryptedData element which contains (via one of its children&#8217;s content) or identifies (via a URI reference) the cipher data. When encrypting an XML element or element content the EncryptedData element replaces the element or content (respectively) in the encrypted version of the XML document. When encrypting arbitrary data (including entire XML documents), the EncryptedData element may become the root of a new XML document or become a child element in an application-chosen XML document.&#8221; The Decryption Transform document &#8221; specifies an XML Signature &#8220;decryption transform&#8221; that enables XML Signature applications to distinguish between those XML Encryption structures that were encrypted before signing (and must not be decrypted) and those that were encrypted after signing (and must be decrypted) for the signature to validate.&#8221; [Full context]</p>
<p>[January 25, 2001] W3C Approves XML Encryption Activity. Joseph Reagle (W3C Policy Analyst, IETF/W3C XML-Signature Co-Chair) posted an announcement to the Public XML Encryption List &#8216;xml-encryption@w3.org&#8217; indicating that an official W3C XML Encryption Activity has been approved. The XML Encryption Charter has been reviewed by the W3C Advisory Committee, Team, and Director. The [draft] charter says, in part: &#8220;The mission of this working group is to develop a process for encrypting/decyrpting digital content (including XML documents and portions thereof) and an XML syntax used to represent the (1) encrypted content and (2) information that enables an intendent recipient to decrypt it. XML Encryption is a method whereby XML content can be transformed such that it is discernable only to the intended recipients, and opaque to all others. There are many applications for such a specification given the increasing importance of XML on the Internet and Web including the protection of payment and transaction information. The proposed work will obviously address how to encrypt an XML documents including elements. The following additional requirements must be met by the WG; these requirements must be augmented and extended by the Requirements Document deliverable: (1) The mechanisms of encryption must be simple: describe how to encrypt/decrypt digital content, XML documents, and portions thereof. a) Only enough information necessary for decryption need be provided. b) The specification must not address authorization, authentication, nor the confidence or trust applications place in the provision of a key though it should enable (or at least not hinder) such XML based technologies. (2) XML-Encryption must be coordinated with and use the work product of other mature XML technologies including XML Schema and XML Signature. (See Coordination) (3) The mandatory portions of the specification must be implemented in at least two independent implementations before being advanced to Proposed Recommendation. The core scope of this activity will be in specifying the necessary data model, syntax, and processing to encrypt XML content. The Working Group (WG) will: (1) Specify a requirements document that further defines the scope and requirements of the WG&#8217;s deliverables. (2) Specify the syntax and processing necessary for creating XML Encryption content. The WG should decide what level of granularity is appropriate with the meta-requirement that the design be simple to implement and quickly deployable. (3) Choose a data model (and representation via XML element types or URIs) for describing any necessary public characteristics of the encrypted content (e.g., the data encrypted is an http://someURI#elementNode). The WG must use pre-existing models such as Information Set, XPath, SetX, or DOM. (4) Choose a method (that can be optional) to canonicalize XML prior to encryption such that it can be decrypted consistently. The WG must use a pre-existing canonicalization method such as Canonical XML. (5) Specify a minimal set of encryption and key information for interoperability purposes. This may be a separate document or part of the specification. (6) Address security concerns arising from the design and its implementation. This may be a separate document or part of the specification. (7) Optionally, develop a document of scenarios and recommendations regarding the affects and requirements of XML Encryption processing on XML parsing and validation. This must be a separate document. (8) Redefine the charter for subsequent work once (1-7) has been achieved. The requirement document must specify and describe the WG&#8217;s choice with respect to the granularity of encryption, the data model and representation resulting from that choice, and the necessity and choice of canonicalization algorithms. The WG must rely upon existing W3C specifications as building blocks to its own design, unless the WG can demonstrate these specifications fail to meet the requirements of XML Encryption applications. In which case the WG must give a strong rationale and obtain Director approval.&#8221; The web site for the XML Encryption WG is publicly accessible.</p>
<p>source: <a rel="nofollow" href="http://xml.coverpages.org/xmlAndEncryption.html">http://xml.coverpages.org/xmlAndEncryption.html</a></p>
<br /><p><script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fwww.indelv.com%2Ftechnology-reports-of-xml-and-encryption.html';
  addthis_title  = 'Technology+Reports+of+XML+and+Encryption%3A';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script></p>
]]></content:encoded>
			</item>
	</channel>
</rss>
