You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by mu...@apache.org on 2008/02/25 23:13:26 UTC
svn commit: r631017 [3/9] - in /xml/security/trunk/data/org/w3c/www/interop:
./ c14n11/ c14n11/appendixa/ xmldsig/ xmldsig/c14n11/ xmldsig/dname/
xmldsig/dname/certs/ xmldsig/xpointer/
Added: xml/security/trunk/data/org/w3c/www/interop/testcases.html
URL: http://svn.apache.org/viewvc/xml/security/trunk/data/org/w3c/www/interop/testcases.html?rev=631017&view=auto
==============================================================================
--- xml/security/trunk/data/org/w3c/www/interop/testcases.html (added)
+++ xml/security/trunk/data/org/w3c/www/interop/testcases.html Mon Feb 25 14:12:52 2008
@@ -0,0 +1,3754 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html lang="" xmlns="http://www.w3.org/1999/xhtml" xml:lang="">
+<head>
+ <meta name="generator" content=
+ "HTML Tidy for Solaris (vers 19 September 2007), see www.w3.org" />
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=ISO-8859-1" />
+ <meta content="text/html; charset=ISO-8859-1" http-equiv=
+ "Content-Type" />
+
+ <title>Test Cases for C14N 1.1 and XMLDSig
+ Interoperability</title>
+ <style type="text/css">
+/*<![CDATA[*/
+ code { font-family: monospace; }
+
+ div.constraint,
+ div.issue,
+ div.note,
+ div.notice { margin-left: 2em; }
+
+
+ li p { margin-top: 0.3em;
+ margin-bottom: 0.3em; }
+ /*]]>*/
+ </style>
+ <link type="text/css" rel="stylesheet" href=
+ "http://www.w3.org/StyleSheets/TR/base.css" />
+</head>
+
+<body>
+ <div class="head">
+ <p><a href="http://www.w3.org/"><img width="72" height="48"
+ alt="W3C" src="http://www.w3.org/Icons/w3c_home" /></a></p>
+
+ <h1>Test Cases for C14N 1.1 and XMLDSig Interoperability</h1>
+
+ <h2>08 January 2008</h2>
+
+ <dl>
+ <dt>This version:</dt>
+
+ <dt>Latest version:</dt>
+
+ <dt>Previous versions:</dt>
+
+ <dt>Authors:</dt>
+
+ <dd>Juan Carlos Cruellas, UPC <a href=
+ "mailto:cruellas@ac.upc.es"><cruellas@ac.upc.es></a></dd>
+
+ <dd>Konrad Lanz, A-SIT <a href=
+ "mailto:Konrad.Lanz@iaik.tugraz.at"><Konrad.Lanz@iaik.tugraz.at></a></dd>
+
+ <dd>Sean Mullan, Sun Microsystems <a href=
+ "mailto:Sean.Mullan@Sun.COM"><Sean.Mullan@Sun.COM></a></dd>
+
+ <dt>Editors:</dt>
+
+ <dd>Juan Carlos Cruellas, UPC <a href=
+ "mailto:cruellas@ac.upc.es"><cruellas@ac.upc.es></a></dd>
+
+ <dd>Konrad Lanz, A-SIT <a href=
+ "mailto:Konrad.Lanz@iaik.tugraz.at"><Konrad.Lanz@iaik.tugraz.at></a></dd>
+
+ <dd>Sean Mullan, Sun Microsystems <a href=
+ "mailto:Sean.Mullan@Sun.COM"><Sean.Mullan@Sun.COM></a></dd>
+
+ <dt>Contributors:</dt>
+
+ <dd>Pratik Datta, Oracle <a href=
+ "mailto:pratik.datta@oracle.com"><pratik.datta@oracle.com></a></dd>
+
+ <dd>Frederick Hirsch, Nokia <a href=
+ "mailto:frederick.hirsch@nokia.com"><frederick.hirsch@nokia.com></a></dd>
+
+ <dd>Bruce Rich, IBM <a href=
+ "mailto:brich@us.ibm.com"><brich@us.ibm.com></a></dd>
+
+ <dd>Thomas Roessler, W3C <a href=
+ "mailto:tlr@w3.org"><tlr@w3.org></a></dd>
+ </dl>
+
+ <p class="copyright">Copyright © 2008 <a href=
+ "http://www.w3.org/"><abbr title=
+ "World Wide Web Consortium">W3C</abbr></a> , All Rights
+ Reserved.</p>
+ </div>
+ <hr />
+
+ <div>
+ <h2><a name="abstract" id="abstract">Abstract</a></h2>
+
+ <p>This document defines interoperability test cases for
+ Canonical XML 1.1 <a href="#XML-C14N1.1">[XML-C14N1.1]</a> and
+ XML Signature Syntax and Processing, Second Edition <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a>. The changes tested include C14N11
+ handling of attributes in the XML namespace, including xml:id
+ and xml:base, appropriate C14N11 nodeset to octet stream
+ transform processing, modifications to RFC 3986 dot segment
+ processing for C14N11, and RFC 4514 string encoding of
+ Distinguished Names. The tests include standalone C14N11 tests
+ as well as tests integrated with XML signature generation and
+ validation. This document also includes earlier test cases used
+ in XML Signature <a href="#XMLDSIG">[XMLDSIG]</a> for
+ regression testing.</p>
+ </div>
+
+ <div>
+ <h2><a name="status" id="status">Status of this
+ Document</a></h2>
+
+ <p>This document is a working document of the <a href=
+ "http://www.w3.org">World Wide Web Consortium</a> XML Security
+ Specifications Maintenance Working Group. For further details
+ of the activity of this group, please see the <a href=
+ "http://www.w3.org/2007/xmlsec/">XML Security Specifications
+ Maintenance Working Group.</a></p>
+ </div>
+
+ <div class="toc">
+ <h2><a name="contents" id="contents">Table of Contents</a></h2>
+
+ <p class="toc">1 <a href="#Introduction">Introduction</a><br />
+ 1.1 <a href="#Introduction-TestCaseNotation">Test Case
+ Notation</a><br />
+ 1.2 <a href="#Introduction.RecommendationRefs">Codes for
+ Recommendation References (Rec, SubRec)</a><br />
+ 1.3 <a href="#Introduction.IssuesCodes">Codes for Issues
+ (SpecificIssue) and Sub-Issues (SpecificSubIssue)</a><br />
+ 2 <a href="#TestCases-Spec">Test Cases specification</a><br />
+ 2.1 <a href="#TestCases-Legacy">Legacy XMLDSig Working
+ Group Test Cases</a><br />
+ 2.2 <a href="#TestCases-C14n11">Test Cases for
+ Canonicalization 1.1</a><br />
+ 2.2.1 <a href="#XMLLANG">Test Cases for xml:lang
+ attribute</a><br />
+ 2.2.2 <a href="#XMLSPACE">Test Cases for xml:space
+ attribute</a><br />
+ 2.2.3 <a href="#XMLID">Test Cases for xml:id
+ attribute</a><br />
+ 2.2.4 <a href="#XMLBASE">Test Cases for xml:base
+ attribute</a><br />
+ 2.2.4.1 <a href="#XMLBASE_PROPAGATION">Test Cases
+ for checking xml:base attribute propagation</a><br />
+ 2.2.4.2 <a href="#XMLBASE_C14N11SPEC">Test Cases
+ for checking XML-C14N1.1 specification tests</a><br />
+ 2.2.5 <a href="#XMLBASE_APPENDIXA">Test Cases for
+ checking examples in the XML-C14N1.1 Appendix</a><br />
+ 2.3 <a href="#TestCases-XMLDSig">Test Cases for
+ XMLDSig</a><br />
+ 2.3.1 <a href="#TestCases-XMLDSig-C14n11">Test Cases
+ for C14N 1.1 in XMLDSig</a><br />
+ 2.3.2 <a href="#TestCases-DefaultCan">Test Cases on
+ nodeset to octet-stream conversion by C14n 1.1 explicitly
+ reflected in the chain of transforms</a><br />
+ 2.3.3 <a href="#TestCases-SchemaBasedXPointers">Test
+ Cases on schema based XPointers and canonicalization</a><br />
+ 2.3.4 <a href="#TestCases-DistinguishedName">Test Cases
+ on String encoding of Distinguished Names</a><br />
+ 2.3.4.1 <a href=
+ "#TestCases-DistinguishedName-RFC2253-RFC4514">Test Cases on
+ differences identified in RFC 2253 and RFC 4514</a><br />
+ 2.3.4.2 <a href=
+ "#TestCases-DistinguishedName-RFC4514">Test Cases for RFC
+ 4514</a><br />
+ 3 <a href="#References">References</a><br /></p>
+ </div>
+ <hr />
+
+ <div class="body">
+ <div class="div1">
+ <h2><a name="Introduction" id="Introduction"></a>1
+ Introduction</h2>
+
+ <p>The test cases include standalone C14N 1.1 tests and test
+ cases involving XML signature generation and validation. XML
+ signatures are generated according to the details specified
+ in this document.</p>
+
+ <p>All the test cases are positive (signatures that are
+ valid).</p>
+
+ <p>Applications should validate these signatures and check
+ that they are valid.</p>
+
+ <div class="div2">
+ <h3><a name="Introduction-TestCaseNotation" id=
+ "Introduction-TestCaseNotation"></a>1.1 Test Case
+ Notation</h3>
+
+ <p>This section summarizes the notation used for
+ identification of test cases.</p>
+
+ <p>A test case identifier matches the following pattern,
+ and the syntax for describing the pattern is borrowed from
+ <a href=
+ "http://www.w3.org/TR/xmldsig-core/#sec-Overview">section
+ 2.0</a> of <a href="#XMLDSIG">[XMLDSIG]</a> (where "?"
+ denotes zero or one occurrence; "+" denotes one or more
+ occurrences; "*" denotes zero or more occurrences) and "|"
+ denotes a choice.</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ Rec/(SubRec/)?(SpecificIssue-(SpecificSubIssue-)?)+TestNumber
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <p>The <code>Rec</code> part identifies the source
+ recommendation for the test case.</p>
+
+ <p>The <code>SubRec</code> part identifies a recommendation
+ that is tested in the context of <code>Rec</code>.</p>
+
+ <p>The <code>SpecificIssue</code> part identifies the issue
+ to be tested by the test case. The optional
+ <code>SpecificSubIssue</code> part further refines the
+ issue to be tested.</p>
+
+ <p>The <code>TestNumber</code> part numbers the test case.
+ It must be an integer number or an integer number followed
+ by a lowercase letter.</p>
+
+ <p>The next section identifies codes used throughout this
+ document.</p>
+ </div>
+
+ <div class="div2">
+ <h3><a name="Introduction.RecommendationRefs" id=
+ "Introduction.RecommendationRefs"></a>1.2 Codes for
+ Recommendation References (<code>Rec</code>,
+ <code>SubRec</code>)</h3>
+
+ <p>The following codes are used for identifying the source
+ recommendations for the test cases:</p>
+
+ <ul>
+ <li>
+ <p><code>c14n11</code> identifies the standalone
+ <a href="#XML-C14N1.1">[XML-C14N1.1]</a> test
+ cases.</p>
+ </li>
+
+ <li>
+ <p><code>xmldsig</code> identifies the <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> test cases.</p>
+
+ <ul>
+ <li>
+ <p><code>c14n11</code> identifies the test cases
+ that test <code>c14n11</code> with
+ <code>xmldsig</code>.</p>
+ </li>
+
+ <li>
+ <p><code>dname</code> identifies the test cases
+ that test <a href="#RFC-4514">[RFC-4514]</a> versus
+ <a href="#RFC-2253">[RFC-2253]</a> with
+ <code>xmldsig</code>.</p>
+ </li>
+
+ <li>
+ <p><code>xpointer</code> identifies the test cases
+ that test <a href=
+ "#XPointer-Framework">[XPointer-Framework]</a>,
+ <a href="#XPointer-Element">[XPointer-Element]</a>
+ and <a href=
+ "#XPointer-xpointer">[XPointer-xpointer]</a> with
+ <code>xmldsig</code>.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+
+ <p id="directory-structure">This structure is reflected in
+ the directories <a href="../c14n11/">c14n11/</a>, <a href=
+ "../xmldsig/">xmldsig/</a>, <a href=
+ "../xmldsig/c14n11/">xmldsig/c14n11/</a>, <a href=
+ "../xmldsig/dname/">xmldsig/dname/</a> and <a href=
+ "../xmldsig/xpointer/">xmldsig/xpointer/</a>.</p>
+ </div>
+
+ <div class="div2">
+ <h3><a name="Introduction.IssuesCodes" id=
+ "Introduction.IssuesCodes"></a>1.3 Codes for Issues
+ (<code>SpecificIssue</code>) and Sub-Issues
+ (<code>SpecificSubIssue</code>)</h3>
+
+ <p>The following codes are used for identifying the issues
+ and sub-issues for the test cases:</p>
+
+ <ul>
+ <li>
+ <p><code>defCan</code> identifies the test cases that
+ test the <a href="#XMLDSIG2">[XMLDSIG2]</a> implicit
+ and explicit rules managing the final canonicalization
+ that precedes the digest computation..</p>
+ </li>
+
+ <li>
+ <p><code>xmllang</code> identifies the test cases that
+ test the C14N11 handling of the <code>xml:lang</code>
+ attribute.</p>
+ </li>
+
+ <li>
+ <p><code>xmlspace</code> identifies the test cases that
+ test the C14N11 handling of the <code>xml:space</code>
+ attribute.</p>
+ </li>
+
+ <li>
+ <p><code>xmlid</code> identifies the test cases that
+ test the C14N11 handling of the <code>xml:id</code>
+ attribute.</p>
+ </li>
+
+ <li>
+ <p><code>xmlbase</code> identifies the test cases that
+ test the C14N11 handling of the <code>xml:base</code>
+ attribute.</p>
+
+ <p>The following sub-issues are associated with this
+ issue:</p>
+
+ <ul>
+ <li>
+ <p><code>prop</code> identifies the test cases that
+ test the C14N11 propagation of the
+ <code>xml:base</code> attribute through the node
+ tree.</p>
+ </li>
+
+ <li>
+ <p><code>annexA</code> identifies the test cases
+ that test the C14N11 Remove Dot Segments examples
+ listed in Appendix A of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a>.</p>
+ </li>
+
+ <li>
+ <p><code>c14n11spec</code> identifies the test
+ cases that test the examples in the <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> specification.</p>
+ </li>
+ </ul>
+ </li>
+
+ <li>
+ <p><code>dnString</code> identifies the test cases that
+ test the string encoding of Distinguished Names.</p>
+ </li>
+
+ <li>
+ <p><code>diffRFCs</code> identifies the test cases that
+ test the differences between <a href=
+ "#RFC-2253">[RFC-2253]</a> and <a href=
+ "#RFC-4514">[RFC-4514]</a>.</p>
+ </li>
+
+ <li>
+ <p><code>xpointer</code> identifies the test cases that
+ test the handling of XPointer Reference URIs as
+ specified in <a href="#XMLDSIG2">[XMLDSIG2]</a></p>
+ </li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="div1">
+ <h2><a name="TestCases-Spec" id="TestCases-Spec"></a>2 Test
+ Cases specification</h2>
+
+ <p>The following sub-sections describe each of the test cases
+ and are grouped by Recommendation and Issue.</p>
+
+ <div class="div2">
+ <h3><a name="TestCases-Legacy" id=
+ "TestCases-Legacy"></a>2.1 Legacy XMLDSig Working Group
+ Test Cases</h3>
+
+ <p>The IETF/W3C XML-DSig Working Group produced an
+ interoperability test matrix that can be found at <a href=
+ "#XMLDSIG-interop">[XMLDSIG-interop]</a>.</p>
+ </div>
+
+ <div class="div2">
+ <h3><a name="TestCases-C14n11" id=
+ "TestCases-C14n11"></a>2.2 Test Cases for Canonicalization
+ 1.1</h3>
+
+ <p>The set of test cases in this section are designed to
+ test the C14N11 handling of attributes in the xml
+ namespace. The input for each of these test cases is an XML
+ document and an XPath document subset expression. Two
+ different sets of tests are included based on the test
+ cases in this section.</p>
+
+ <ul>
+ <li>
+ <p>Standalone tests: no XML signature generation or
+ validation is required. The XPath document subset
+ expression is applied to the input document. These
+ tests are used to check that the implementation for
+ <a href="#XML-C14N1.1">[XML-C14N1.1]</a> behaves
+ correctly.</p>
+ </li>
+
+ <li>
+ <p>Integrated tests with XML signatures: In these set
+ of tests, an XML signature is generated based on the
+ input document and a corresponding XPath Filtering
+ Transform as indicated in the tables. For these set of
+ tests, the following rules apply:</p>
+
+ <ul>
+ <li>
+ <p>The XML Signature is generated using the
+ HMAC-SHA1 SignatureMethod algorithm and a secret
+ key with the value:
+ <code>"secret".getBytes("ASCII")</code>.</p>
+ </li>
+
+ <li>
+ <p>The <code>Transforms</code> element contains a
+ sequence of two transforms:</p>
+
+ <ul>
+ <li>
+ <p>An XPath Filtering Transform that contains
+ an XPath expression that depends on the test
+ case.</p>
+ </li>
+
+ <li>
+ <p>A Canonical XML 1.1 Transform.</p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+
+ <div class="div3">
+ <h4><a name="XMLLANG" id="XMLLANG"></a>2.2.1 Test Cases
+ for <code>xml:lang</code> attribute</h4>
+
+ <p>The set of test cases in this section test the C14N11
+ handling of <code>xml:lang</code> attributes.</p>
+
+ <p>Below is the <a href=
+ "../c14n11/xmllang-input.xml">input document</a> for the
+ test cases in this section:</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <ietf:c14n11Xmllang xmlns:ietf="http://www.ietf.org"
+ xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+ </ietf:c14n11Xmllang>
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <div class="note">
+ <p class="prefix"><b>Note:</b></p>
+
+ <p>Document subset expressions for document subsets
+ computation are defined as in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a>.</p>
+ </div>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmllang-1">
+ Test case c14n11/xmllang-1</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">To-Be-Signed (TBS
+ henceforth) data object with ONLY a
+ <code>xml:lang</code> attribute in a certain
+ element <code>e</code> whose content includes other
+ elements. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>e</code>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:lang
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-1.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)[ancestor-or-self::ietf:e1]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-1.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:lang="EN">
+ <ietf:e11>
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+ </ietf:e1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmllang-2">
+ Test case c14n11/xmllang-2</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS data object with
+ ONLY a <code>xml:lang</code> attribute in a certain
+ element <code>e</code> whose content includes other
+ elements. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ DOES NOT include neither element <code>e</code> nor
+ any of its children elements.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:lang
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-2.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)[ancestor-or-self::ietf:e2]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-2.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e2 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org">
+ <ietf:e21></ietf:e21>
+ </ietf:e2>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmllang-3">
+ Test case c14n11/xmllang-3</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS with ONLY a
+ <code>xml:lang</code> attribute in a certain
+ element <code>e</code> whose content includes a
+ sequence of one element. The
+ <code>ds:Transform</code> contains a XPath
+ expression whose result is a node set that DOES NOT
+ include element <code>e</code> but includes one
+ child element.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:lang
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-3.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)[ancestor-or-self::ietf:e11]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-3.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e11 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:lang="EN">
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmllang-4">
+ Test case c14n11/xmllang-4</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS with ONLY a
+ <code>xml:lang</code> attribute in a certain
+ element <code>e</code> whose content includes a
+ sequence of more than one element (these children
+ may in turn contain children elements). The
+ <code>ds:Transform</code> contains a XPath
+ expression whose result is a node set that DOES NOT
+ include element <code>e</code> but includes more
+ than one of its children elements.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:lang
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-4.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)[ancestor-or-self::ietf:e11 or
+ ancestor-or-self::ietf:e12]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmllang-4.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e11 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:lang="EN">
+ <ietf:e111></ietf:e111>
+ </ietf:e11>\
++ <ietf:e12 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" at="2" xml:lang="EN">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="div3">
+ <h4><a name="XMLSPACE" id="XMLSPACE"></a>2.2.2 Test Cases
+ for <code>xml:space</code> attribute</h4>
+
+ <p>The set of test cases in this section test the C14N11
+ handling of <code>xml:space</code> attributes.</p>
+
+ <p>Below is the <a href=
+ "../c14n11/xmlspace-input.xml">input document</a> for the
+ test cases in this section:</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <ietf:c14n11XmlSpaceDoc1 xmlns:ietf="http://www.ietf.org"
+ xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:space="true">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+ </ietf:c14n11XmlSpaceDoc1>
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmlspace-1">
+ Test case c14n11/xmlspace-1</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS data object with
+ ONLY a <code>xml:space</code> attribute in a
+ certain element <code>e</code> whose content
+ includes other elements. The
+ <code>ds:Transform</code> contains a XPath
+ expression whose result is a node set that includes
+ element <code>e</code>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:space
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-1.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e1]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-1.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:space="true">
+ <ietf:e11>
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+ </ietf:e1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmlspace-2">
+ Test case c14n11/xmlspace-2</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS data object with
+ ONLY a <code>xml:space</code> attribute in a
+ certain element <code>e</code> whose content
+ includes other elements. The
+ <code>ds:Transform</code> contains a XPath
+ expression whose result is a node set that DOES NOT
+ include neither element <code>e</code> nor any of
+ its children elements.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:space
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-2.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e2]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-2.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e2 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org">
+ <ietf:e21></ietf:e21>
+ </ietf:e2>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmlspace-3">
+ Test case c14n11/xmlspace-3</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS with ONLY a
+ <code>xml:space</code> attribute in a certain
+ element <code>e</code> whose content includes a
+ sequence of one element. The
+ <code>ds:Transform</code> contains a XPath
+ expression whose result is a node set that DOES NOT
+ include element <code>e</code> but includes its
+ child element.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:space
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-3.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e11]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-3.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e11 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:space="true">
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmlspace-4">
+ Test case c14n11/xmlspace-4</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS with ONLY a
+ <code>xml:space</code> attribute in a certain
+ element <code>e</code> whose content includes a
+ sequence of more than one element (these children
+ may in turn contain children elements). The
+ <code>ds:Transform</code> contains a XPath
+ expression whose result is a node set that DOES NOT
+ include element <code>e</code> but includes more
+ than one of its children elements.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:space
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-4.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e11 or
+ ancestor-or-self::ietf:e12]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlspace-4.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e11 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:space="true">
+ <ietf:e111></ietf:e111>
+ </ietf:e11>\
++ <ietf:e12 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" at="2" xml:space="true">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="div3">
+ <h4><a name="XMLID" id="XMLID"></a>2.2.3 Test Cases for
+ <code>xml:id</code> attribute</h4>
+
+ <p>The set of test cases in this section test the C14N11
+ handling of <code>xml:id</code> attributes.</p>
+
+ <p>Below is the <a href="../c14n11/xmlid-input.xml">input
+ document</a> for all the test cases in this section:</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <ietf:c14n11XmlIdDoc1 xmlns:ietf="http://www.ietf.org"
+ xmlns:w3c="http://www.w3.org">
+ <ietf:e1 xml:id="IdInterop">
+ <ietf:e11>
+ <ietf:e111 />
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 />
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2 >
+ <ietf:e21 />
+ </ietf:e2>
+ </ietf:c14n11XmlIdDoc1>
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmlid-1">Test
+ case c14n11/xmlid-1</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS with ONLY a
+ <code>xml:id</code> attribute in a certain element
+ <code>e</code> whose content includes other
+ elements. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>e</code>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:id
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlid-1.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e1]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlid-1.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" xml:id="IdInterop">
+ <ietf:e11>
+ <ietf:e111></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+ </ietf:e1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="c14n11xmlid-2">Test
+ case c14n11/xmlid-2</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">TBS with ONLY a
+ <code>xml:id</code> attribute in a certain element
+ <code>e</code> whose content includes other
+ elements. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ DOES NOT include the element <code>e</code> but
+ some of the children of the element
+ <code>e</code>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> handle xml:id
+ attributes as defined in <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlid-2.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e11 or
+ ancestor-or-self::ietf:e12]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlid-2.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e11 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org">
+ <ietf:e111></ietf:e111>
+ </ietf:e11>\
++ <ietf:e12 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org" at="2">
+ <ietf:e121></ietf:e121>
+ </ietf:e12>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="div3">
+ <h4><a name="XMLBASE" id="XMLBASE"></a>2.2.4 Test Cases
+ for <code>xml:base</code> attribute</h4>
+
+ <p>The set of test cases in this section test the C14N11
+ handling of <code>xml:base</code> attributes.</p>
+
+ <p>Three sets of test cases have been defined:</p>
+
+ <ul>
+ <li>
+ <p>Tests that check if the implementation correctly
+ propagates the <code>xml:base</code> attributes
+ through the node tree.</p>
+ </li>
+
+ <li>
+ <p>Tests that check if the implementation correctly
+ processes the examples involving xml:base propagation
+ in the <a href="#XML-C14N1.1">[XML-C14N1.1]</a>
+ specification.</p>
+ </li>
+
+ <li>
+ <p>Tests that check if the implementation correctly
+ processes the examples in the Appendix of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a></p>
+ </li>
+ </ul>
+
+ <div class="div4">
+ <h5><a name="XMLBASE_PROPAGATION" id=
+ "XMLBASE_PROPAGATION"></a>2.2.4.1 Test Cases for
+ checking <code>xml:base</code> attribute
+ propagation</h5>
+
+ <p>This section defines test cases that test how
+ implementations propagate <code>xml:base</code>
+ attributes through the tree when the result of the
+ filtering is a document subset.</p>
+
+ <p>Below is the <a href=
+ "../c14n11/xmlbase-prop-input.xml">input document</a>
+ for the test cases in this section:</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"/>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"/>
+ </ietf:e12>
+ </ietf:e1>
+ <ietf:e2>
+ <ietf:e21 xml:base="/xmlbase21/"/>
+ </ietf:e2>
+ <ietf:e3>
+ <ietf:e31 at="3"/>
+ </ietf:e3>
+ </ietf:c14n11XmlBaseDoc1>
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <p>The document's root element
+ <code>ietf:c14n11XmlBaseDoc1</code> defines an
+ <code>xml:base</code> attribute. This element contains
+ three children elements.</p>
+
+ <p>The first element <code>ietf:e1</code> has another
+ <code>xml:base</code> attribute. All the
+ <code>ietf:e1</code>'s descendant elements have a
+ <code>xml:base</code> attribute. Transforms that select
+ subsets of <code>ietf:e1</code>'s descendants will test
+ how each level in the tree of elements incorporates its
+ corresponding part to the value of the final
+ <code>xml:base</code>.</p>
+
+ <p>The second element <code>ietf:e2</code> does not
+ have a <code>xml:base</code> attribute, but its child
+ element, <code>ietf:e21</code> has a
+ <code>xml:base</code> attribute. Transforms that select
+ <code>ietf:e21</code> will test how it takes the value
+ of <code>xml:base</code> from an ancestor different
+ than its parent.</p>
+
+ <p>As for the third element, neither it nor any of its
+ descendants have a <code>xml:base</code> attribute.
+ Transforms that select <code>ietf:e3</code> or any of
+ its descendants will test how they inherit the
+ <code>xml:base</code> attribute from the root element
+ without any further processing.</p>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-1">Test case
+ c14n11/xmlbase-prop-1</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element
+ <code>ietf:c14n11XmlBaseDoc1</code> and the child
+ <code>ietf:e1</code> and its descendant.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> work properly
+ when the <code>xml:base</code> origin appears in
+ the output document subset and also children with
+ <code>xml:base</code>, which do not require
+ further processing, are also present.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-1.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)
+ [ancestor-or-self::ietf:c14n11XmlBaseDoc1 and
+ not(ancestor-or-self::ietf:e2)]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-1.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e1 xml:base="/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"></ietf:e121>
+ </ietf:e12>
+ </ietf:e1>
+
+ <ietf:e3>
+ <ietf:e31 at="3"></ietf:e31>
+ </ietf:e3>
+ </ietf:c14n11XmlBaseDoc1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-2">Test case
+ c14n11/xmlbase-prop-2</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>ietf:e1</code> and its
+ descendant but not
+ <code>ietf:c14n11XmlBaseDoc1</code>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> properly build
+ the <code>xml:base</code> at the first level
+ (<code>ietf:e1</code>).</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-2.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e1]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-2.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase1/">
+ <ietf:e11 xml:base="/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"></ietf:e111>
+ </ietf:e11>
+ <ietf:e12 at="2">
+ <ietf:e121 xml:base="/xmlbase121/"></ietf:e121>
+ </ietf:e12>
+ </ietf:e1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-3">Test case
+ c14n11/xmlbase-prop-3</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>ietf:e11</code> and its
+ descendant. Elements
+ <code>ietf:c14n11XmlBaseDoc1</code> and
+ <code>ietf:e1</code> do not appear.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> properly build
+ the <code>xml:base</code> if one of intermediate
+ the levels (<code>ietf:e1</code>) are absent from
+ the document subset.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-3.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e11]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-3.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e11 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase11/">
+ <ietf:e111 xml:base="/xmlbase111/"></ietf:e111>
+ </ietf:e11>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-4">Test case
+ c14n11/xmlbase-prop-4</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>ietf:e111</code> and its
+ descendant. Elements
+ <code>ietf:c14n11XmlBaseDoc1</code>,
+ <code>ietf:e11</code> and <code>ietf:e1</code> do
+ not appear.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> properly build
+ the <code>xml:base</code> if several intermediate
+ levels (<code>ietf:e1</code> and
+ <code>ietf:e11</code>) are absent from the
+ document subset.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-4.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)
+ [ancestor-or-self::ietf:e111]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-4.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e111 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase111/"></ietf:e111>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-5">Test case
+ c14n11/xmlbase-prop-5</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>ietf:e2</code> and its
+ descendant. Elements
+ <code>ietf:c14n11XmlBaseDoc1</code>,
+ <code>ietf:e1</code> and its descendant, and
+ <code>ietf:e3</code> and its descendant do not
+ appear.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> properly build
+ the <code>xml:base</code> if one intermediate
+ level (<code>ietf:e2</code>) without any
+ <code>xml:base</code> attribute is absent from
+ the document subset.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-5.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e21]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-5.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e21 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase21/"></ietf:e21>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-6">Test case
+ c14n11/xmlbase-prop-6</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes element <code>ietf:e3</code> and its
+ descendant. Elements
+ <code>ietf:c14n11XmlBaseDoc1</code>,
+ <code>ietf:e1</code> and its descendant, and
+ <code>ietf:e2</code> and its descendant do not
+ appear.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> properly build
+ the <code>xml:base</code> in one element that
+ originally had no <code>xml:base</code>
+ attribute.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-6.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [ancestor-or-self::ietf:e3]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-6.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:e3 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase0/">
+ <ietf:e31 at="3"></ietf:e31>
+ </ietf:e3>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-prop-7">Test case
+ c14n11/xmlbase-prop-7</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The document shown
+ above. The <code>ds:Transform</code> contains a
+ XPath expression whose result is a node set that
+ includes elements
+ <code>ietf:c14n11XmlBaseDoc1</code> and
+ <code>ietf:e3</code> and its descendant. Elements
+ <code>ietf:e1</code> and its descendant, and
+ <code>ietf:e2</code> and its descendant do not
+ appear.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> do not pass the
+ <code>xml:base</code> to another element when it
+ is not necessary.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-7.xpath">Document subset
+ expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)
+ [ancestor-or-self::ietf:c14n11XmlBaseDoc1 and
+ not(ancestor-or-self::ietf:e1 or
+ ancestor-or-self::ietf:e2)]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-prop-7.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <ietf:c14n11XmlBaseDoc1 xmlns:ietf="http://www.ietf.org"\
++ xmlns:w3c="http://www.w3.org"\
++ xml:base="http://xmlbase.example.org/xmlbase0/">
+
+
+ <ietf:e3>
+ <ietf:e31 at="3"></ietf:e31>
+ </ietf:e3>
+ </ietf:c14n11XmlBaseDoc1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="div4">
+ <h5><a name="XMLBASE_C14N11SPEC" id=
+ "XMLBASE_C14N11SPEC"></a>2.2.4.2 Test Cases for
+ checking XML-C14N1.1 specification tests</h5>
+
+ <p>This section defines test cases that are based on
+ the examples in the C14N11 specification that propagate
+ <code>xml:base</code> attributes through the tree when
+ the result of the filtering is a document subset.</p>
+
+ <p>Below is the <a href=
+ "../c14n11/xmlbase-c14n11spec-input.xml">input
+ document</a> from section 3.8 of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> for the test case
+ c14n11/xmlbase-c14n11spec-102 below:</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <!DOCTYPE doc [
+ <!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+ <!ATTLIST e3 id ID #IMPLIED>
+ ]>
+ <doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"\
++ xml:base="http://www.example.com/something/else">
+ <e1>
+ <e2 xmlns="" xml:id="abc" xml:base="../bar/">
+ <e3 id="E3" xml:base="foo"/>
+ </e2>
+ </e1>
+ </doc>
+
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-c14n11spec-102">Test case
+ c14n11/xmlbase-c14n11spec-102</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The input document
+ shown above.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that correct
+ xml:base fixup is performed.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-c14n11spec-102.xpath">Document
+ subset expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)[self::ietf:e1 or (parent::ietf:e1
+ and not(self::text() or self::e2)) or
+ count(id("E3")|ancestor-or-self::node()) =
+ count(ancestor-or-self::node())]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-c14n11spec-102.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"\
++ xml:base="http://www.example.com/something/else">\
++ <e3 xmlns="" id="E3" xml:base="../bar/foo" xml:space="preserve">\
++ </e3></e1>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Below is the <a href=
+ "../c14n11/xmlbase-c14n11spec2-input.xml">input
+ document</a> similar to the example from section 3.8 of
+ <a href="#XML-C14N1.1">[XML-C14N1.1]</a> for the test
+ case c14n11/xmlbase-c14n11spec-102 below. The main
+ difference is that the value of the xml:base attribute
+ of the e2 element is "bar/" instead of "../bar".</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <!DOCTYPE doc [
+ <!ATTLIST e2 xml:space (default|preserve) 'preserve'>
+ <!ATTLIST e3 id ID #IMPLIED>
+ ]>
+ <doc xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"\
++ xml:base="something/else">
+ <e1>
+ <e2 xmlns="" xml:id="abc" xml:base="bar/">
+ <e3 id="E3" xml:base="foo"/>
+ </e2>
+ </e1>
+ </doc>
+
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-c14n11spec2-102">Test case
+ c14n11/xmlbase-c14n11spec2-102</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The input document
+ shown above.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that correct
+ xml:base fixup is performed.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-c14n11spec2-102.xpath">Document
+ subset expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*)[self::ietf:e1 or (parent::ietf:e1
+ and not(self::text() or self::e2)) or
+ count(id("E3")|ancestor-or-self::node()) =
+ count(ancestor-or-self::node())]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-c14n11spec2-102.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <e1 xmlns="http://www.ietf.org" xmlns:w3c="http://www.w3.org"\
++ xml:base="something/else">\
++ <e3 xmlns="" id="E3" xml:base="bar/foo" xml:space="preserve">\
++ </e3></e1>
+
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Below is the <a href=
+ "../c14n11/xmlbase-c14n11spec3-input.xml">input
+ document</a> from section 2.4 of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a> for the test case
+ c14n11/xmlbase-c14n11spec-103 below.</p>
+
+ <table summary="Example" width="100%" bgcolor="#99FFFF"
+ border="1" cellpadding="5" class="eg">
+ <tr>
+ <td>
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <a xml:base="foo/bar">
+ <b xml:base="..">
+ <c xml:base="..">
+ <d xml:base="x">
+ </d>
+ </c>
+ </b>
+ </a>
+
+</pre>
+ </td>
+ </tr>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-c14n11spec3-103">Test case
+ c14n11/xmlbase-c14n11spec3-103</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The input document
+ shown above.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that correct
+ xml:base fixup is performed. This test
+ illustrates the modification of the "Remove Dot
+ Segments" algorithm.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-c14n11spec3-103.xpath">Document
+ subset expression</a></th>
+
+ <td rowspan="1" colspan="1">(//. | //@* |
+ //namespace::*) [self::a or
+ ancestor-or-self::d]</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/xmlbase-c14n11spec3-103.output">Output</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <a xml:base="foo/bar"><d xml:base="../../x">
+ </d></a>
+
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
+ <div class="div3">
+ <h4><a name="XMLBASE_APPENDIXA" id=
+ "XMLBASE_APPENDIXA"></a>2.2.5 Test Cases for checking
+ examples in the XML-C14N1.1 Appendix</h4>
+
+ <p>This section defines test cases for checking if
+ implementations are compliant with <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a>, specifically the
+ normative rules in the <a href=
+ "http://www.w3.org/TR/2008/PR-xml-c14n11-20080129/#DocSubsets">
+ Document Subsets</a> section. Informative examples are
+ given in <a href=
+ "http://www.w3.org/TR/2008/PR-xml-c14n11-20080129/#appendix">
+ the Appendix</a> of C14N11.</p>
+
+ <p>Each test case in this section specifies an input
+ string, representing a URI that must be processed
+ according to the modified Remove Dot Segments algorithm
+ described in Section 2.4 (Document Subsets) of <a href=
+ "#XML-C14N1.1">[XML-C14N1.1]</a>.</p>
+
+ <p>Each test case appears in a row of the table shown
+ below. The first column identifies the input URI that has
+ to be processed. The second column shows the
+ corresponding output.</p>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id=
+ "c14n11xmlbase-annexa">Test case
+ c14n11/xmlbase-annexa</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/appendixa/inputs.txt">inputs.txt</a></th>
+
+ <th rowspan="1" colspan="1"><a href=
+ "../c14n11/appendixa/outputs.txt">outputs.txt</a></th>
+ </tr>
+
+ <tr>
+ <td rowspan="1" colspan="1">
+ <pre>
+ no/.././/pseudo-netpath/seg/file.ext
+ no/..//.///pseudo-netpath/seg/file.ext
+ yes/no//..//.///pseudo-netpath/seg/file.ext
+ no/../yes
+ no/../yes/
+ no/../yes/no/..
+ ../../no/../..
+ no/../..
+ no/..
+ no/../
+ /a/b/c/./../../g
+ mid/content=5/../6
+ ../../..
+ no/../../
+ ..yes/..no/..no/..no/../../../..yes
+ ..yes/..no/..no/..no/../../../..yes/
+ ../..
+ ../../../
+ .
+ ./
+ ./.
+ //no/..
+ ../../no/..
+ ../../no/../
+ yes/no/../
+ yes/no/no/../..
+ yes/no/no/no/../../..
+ yes/no/../yes/no/no/../..
+ yes/no/no/no/../../../yes
+ yes/no/no/no/../../../yes/
+ /no/../
+ /yes/no/../
+ /yes/no/no/../..
+ /yes/no/no/no/../../..
+ ../../..no/..
+ ../../..no/../
+ ..yes/..no/../
+ ..yes/..no/..no/../..
+ ..yes/...no/..no/..no/../../..
+ ..yes/..no/../..yes/..no/..no/../..
+ /..no/../
+ /..yes/..no/../
+ /..yes/..no/..no/../..
+ /..yes/..no/..no/..no/../../..
+ /
+ /.
+ /./
+ /./.
+ /././
+ /..
+ /../..
+ /../../..
+ /../../..
+ //..
+ //..//..
+ //..//..//..
+ /./..
+ /./.././..
+ /./.././.././..
+ .
+ ./
+ ./.
+ ..
+ ../
+</pre>
+ </td>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ pseudo-netpath/seg/file.ext
+ pseudo-netpath/seg/file.ext
+ yes/pseudo-netpath/seg/file.ext
+ yes
+ yes/
+ yes/
+ ../../../
+ ../
+ /a/g
+ mid/6
+ ../../../
+ ../
+ ..yes/..yes
+ ..yes/..yes/
+ ../../
+ ../../../
+ /
+ ../../
+ ../../
+ yes/
+ yes/
+ yes/
+ yes/yes/
+ yes/yes
+ yes/yes/
+ /
+ /yes/
+ /yes/
+ /yes/
+ ../../
+ ../../
+ ..yes/
+ ..yes/
+ ..yes/
+ ..yes/..yes/
+ /
+ /..yes/
+ /..yes/
+ /..yes/
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ /
+ ../
+ ../
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+ </div>
+
+ <div class="div2">
+ <h3><a name="TestCases-XMLDSig" id=
+ "TestCases-XMLDSig"></a>2.3 Test Cases for XMLDSig</h3>
+
+ <div class="div3">
+ <h4><a name="TestCases-XMLDSig-C14n11" id=
+ "TestCases-XMLDSig-C14n11"></a>2.3.1 Test Cases for C14N
+ 1.1 in XMLDSig</h4>
+
+ <p>The test cases in section <a href=
+ "#TestCases-C14n11"><b>2.2 Test Cases for
+ Canonicalization 1.1</b></a> are performed in the context
+ of XMLDSig as well. Here it should be noted that this is
+ performed in a different location (i.e. <a href=
+ "../xmldsig/c14n11/">xmldsig/c14n11/</a>) and the
+ XPath-Filter expression in the
+ <code>ds:Transform/ds:XPath</code> should be equal to the
+ filter step of the XPath expressions in section <a href=
+ "#TestCases-C14n11"><b>2.2 Test Cases for
+ Canonicalization 1.1</b></a> (cf. <a href=
+ "http://lists.w3.org/Archives/Public/public-xmlsec-maintwg/2007Sep/0017.html">
+ explanation</a>). The test cases are specified by an
+ "unsigned" <code>ds:Signature</code> (without
+ <code>ds:DigestValue</code> and
+ <code>ds:SignatureValue</code>) in files in <a href=
+ "../xmldsig/c14n11/">xmldsig/c14n11/</a> having the
+ postfix <code>...-template.xml</code>.</p>
+ </div>
+
+ <div class="div3">
+ <h4><a name="TestCases-DefaultCan" id=
+ "TestCases-DefaultCan"></a>2.3.2 Test Cases on nodeset to
+ octet-stream conversion by C14n 1.1 explicitly reflected
+ in the chain of transforms</h4>
+
+ <p>The set of test cases in this section test the
+ <a href="http://www.w3.org/2007/xmlsec/Drafts/xmldsig-core/#sec-ReferenceGeneration">
+ Reference Generation</a> steps of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> and its rules that manage the
+ contents of the <code>Transforms</code> element when
+ nodeset to octet-stream conversions are to be performed
+ by canonicalization.</p>
+
+ <p>General rules for these test cases:</p>
+
+ <ul>
+ <li>
+ <p>Test cases contain a <code>ds:Transforms</code>
+ element with one child, containing a XPath filter
+ that depends on the test case.</p>
+ </li>
+ </ul>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="xmldsigdefCan-1">
+ Test case xmldsig/defCan-1</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The same <a href=
+ "../xmldsig/c14n11/xml-base-input.xml">input
+ document</a> as in section <a href=
+ "#XMLBASE"><b>2.2.4 Test Cases for xml:base
+ attribute</b></a>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations and APIs of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> honor the recommendation
+ to use <a href="#XML-C14N1.1">[XML-C14N1.1]</a> in
+ section 3.1.1 "Reference Generation" of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> and make its use
+ explicit as a <code>ds:Transform</code>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../xmldsig/defCan-1-template.xml">Template</a></th>
+
+ <td rowspan="1" colspan="1">This <a href=
+ "../xmldsig/defCan-1-template.xml">template</a> can
+ be used to instruct some API to create a signature
+ with a chain of transforms that would require
+ implicit transformations from a node set to an
+ octet stream. It is expected that c14n11 is
+ inserted at the relevant places.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../xmldsig/defCan-1-signature.xml">Signature</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">\
++ <SignedInfo>\
++ <CanonicalizationMethod\
++ Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ <SignatureMethod\
++ Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>\
++ <Reference URI="c14n11/xml-base-input.xml"><Transforms>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">\
++ <XPath xmlns:ietf="http://www.ietf.org">\
++ ancestor-or-self::ietf:c14n11XmlBaseDoc1 and\
++ not(ancestor-or-self::ietf:e2)</XPath></Transform>\
++ <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ </Transforms>\
++ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>\
++ <DigestValue>t7d2cL8Ink8A5i3cS9/bu9MBBU8=</DigestValue>\
++ </Reference></SignedInfo>\
++ <SignatureValue>LR4s+Nxoq3VZO1NiCLoiovfCpK4=</SignatureValue>\
++ </Signature>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="xmldsigdefCan-2">
+ Test case xmldsig/defCan-2</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The same <a href=
+ "../xmldsig/c14n11/xml-base-input.xml">input
+ document</a> as in section <a href=
+ "#XMLBASE"><b>2.2.4 Test Cases for xml:base
+ attribute</b></a>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations and APIs of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> honor the recommendation
+ to use <a href="#XML-C14N1.1">[XML-C14N1.1]</a> in
+ section 3.1.1 "Reference Generation" of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> and make it's use
+ explicit as a <code>ds:Transform</code>. It is
+ expected that c14n11 is inserted at the relevant
+ places.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../xmldsig/defCan-2-template.xml">Template</a></th>
+
+ <td rowspan="1" colspan="1">This <a href=
+ "../xmldsig/defCan-2-template.xml">template</a> can
+ be used to instruct some API to create a signature
+ with a chain of transforms that would require
+ implicit transformations from a node set to an
+ octet stream. The focus in this test case is to
+ assure that c14n11 is inserted before transforms
+ requiring an octet stream as input and also at the
+ end of the chain of transforms if necessary because
+ the last transform resulted in a node set.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../xmldsig/defCan-2-signature.xml">Signature</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">\
++ <SignedInfo>\
++ <CanonicalizationMethod\
++ Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ <SignatureMethod\
++ Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>\
++ <Reference URI="c14n11/xml-base-input.xml"><Transforms>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">\
++ <XPath xmlns:ietf="http://www.ietf.org">\
++ ancestor-or-self::ietf:e21</XPath></Transform>\
++ <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">\
++ <xsl:stylesheet version="1.0"\
++ xmlns="http://www.w3.org/1999/XSL/Transform"\
++ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\
++ <xsl:template match="@*|node()"><xsl:copy>\
++ <xsl:apply-templates select="@*|node()"/></xsl:copy>\
++ </xsl:template></xsl:stylesheet></Transform>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">\
++ <XPath xmlns:ietf="http://www.ietf.org">1</XPath>\
++ </Transform>\
++ <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ </Transforms>\
++ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>\
++ <DigestValue>fL7Igzs0LL7lKHJzAJIKYCphYBo=</DigestValue>\
++ </Reference></SignedInfo>\
++ <SignatureValue>bKQLywY51VZwjutUX/CUMsVs6RE=</SignatureValue>\
++ </Signature>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <table border="1">
+ <tbody>
+ <tr>
+ <th rowspan="1" colspan="2" id="xmldsigdefCan-3">
+ Test case xmldsig/defCan-3</th>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Input details</th>
+
+ <td rowspan="1" colspan="1">The same <a href=
+ "../xmldsig/c14n11/xml-base-input.xml">input
+ document</a> as in section <a href=
+ "#XMLBASE"><b>2.2.4 Test Cases for xml:base
+ attribute</b></a>.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1">Rationale</th>
+
+ <td rowspan="1" colspan="1">Check that
+ implementations and APIs of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> honor the recommendation
+ to use <a href="#XML-C14N1.1">[XML-C14N1.1]</a> in
+ section 3.1.1 "Reference Generation" of <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a> and make it's use
+ explicit as a <code>ds:Transform</code>. It is
+ expected that c14n11 is inserted at the relevant
+ places. The focus in this test case is to assure
+ that c14n11 is inserted before transforms requiring
+ an octet stream as input but not inserted at the
+ end of the chain of transforms, which is not
+ necessary because the last transform resulted in an
+ octet stream.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../xmldsig/defCan-3-template.xml">Template</a></th>
+
+ <td rowspan="1" colspan="1">This <a href=
+ "../xmldsig/defCan-3-template.xml">template</a> can
+ be used to instruct some API to create a signature
+ with a chain of transforms that would require
+ implicit transformations from a node set to an
+ octet stream.</td>
+ </tr>
+
+ <tr>
+ <th rowspan="1" colspan="1"><a href=
+ "../xmldsig/defCan-3-signature.xml">Signature</a></th>
+
+ <td rowspan="1" colspan="1">
+ <pre>
+ <?xml version="1.0" encoding="UTF-8"?>
+ <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">\
++ <SignedInfo>\
++ <CanonicalizationMethod\
++ Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ <SignatureMethod\
++ Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>\
++ <Reference URI="c14n11/xml-base-input.xml"><Transforms>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">\
++ <XPath xmlns:ietf="http://www.ietf.org">\
++ ancestor-or-self::ietf:e21</XPath></Transform>\
++ <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">\
++ <xsl:stylesheet version="1.0"\
++ xmlns="http://www.w3.org/1999/XSL/Transform"\
++ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\
++ <xsl:template match="@*|node()"><xsl:copy>\
++ <xsl:apply-templates select="@*|node()"/></xsl:copy>\
++ </xsl:template></xsl:stylesheet></Transform>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">\
++ <XPath xmlns:ietf="http://www.ietf.org">1</XPath>\
++ </Transform>\
++ <Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/>\
++ <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">\
++ <xsl:stylesheet version="1.0"\
++ xmlns="http://www.w3.org/1999/XSL/Transform"\
++ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\
++ <xsl:template match="@*|node()"><xsl:copy>\
++ <xsl:apply-templates select="@*|node()"/></xsl:copy>\
++ </xsl:template></xsl:stylesheet></Transform>\
++ </Transforms>\
++ <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>\
++ <DigestValue>hqabUu4fEZp7GK5JRyFC26W5JBk=</DigestValue>\
++ </Reference></SignedInfo>\
++ <SignatureValue>9+wp0W9xwL5X3kSttxABZ7p/kU0=</SignatureValue>\
++ </Signature>
+</pre>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </div>
+
+ <div class="div3">
+ <h4><a name="TestCases-SchemaBasedXPointers" id=
+ "TestCases-SchemaBasedXPointers"></a>2.3.3 Test Cases on
+ schema based XPointers and canonicalization</h4>
+
+ <p>This section defines test cases that test if
+ implementations behave correctly when processing both
+ schema-based xpointers and short-name xpointers with
+ regards to comments present in the to be signed xml data
+ object.</p>
+
+ <p>The following rules apply to the test cases in this
+ section:</p>
+
+ <ul>
+ <li>
+ <p>As the model processing is defined in <a href=
+ "#XMLDSIG2">[XMLDSIG2]</a>, the test cases are based
+ on XML signatures. For each test case, an XML
+ signature will be generated and validated. The
+ signatures will be enveloped signatures when the
+ <code>URI</code> attribute is referencing the root
+ element and enveloping when the <code>URI</code>
+ attribute is referencing an element using its Id
+ attribute.</p>
+ </li>
+
+ <li>
+ <p>The input for the test cases is the to be signed
[... 1312 lines stripped ...]